Понадобилось при решении одной из задач. Мне нужно было получить значение, бита в конкретной позиции, искал нужную функцию, нашел на исходниках. Привожу пример для двух случаев, когда нужно узнать значение бита в конкретной позиции, когда нужно установить значение бита.
void SetBit(DWORD& dw, int nBitNumber, int nBitValue) { //dw - целое, в котором задаем бит //nBitNumber - номер бита, который задаем (0..31) DWORD dwMask = 1 << nBitNumber;// 0000100000.... //nBitValue (0|1) if(nBitValue == 0) {//задаем 0 dwMask = ~dwMask;// 1111011111.... dw = dw & dwMask; // 0 & x = 0 } else {//задаем 1 dw = dw | dwMask;// 1 | x = 1 } } int GetBit(DWORD dw, int nBitNumber) { //dw - целое в котором узнаем бит //nBitNumber - номер бита, который узнаем (0..31) DWORD dwMask = 1 << nBitNumber;// 0000100000.... dw = dwMask & dw; if(dw) return 1; return 0; }
Взято отсюда
Оставить комментарий