Функции для работы с битами

Август 15th, 2011 § 0 comments

Понадобилось при решении одной из задач. Мне нужно было получить значение, бита в конкретной позиции, искал нужную функцию, нашел на исходниках. Привожу пример для двух случаев, когда нужно узнать значение бита в конкретной позиции, когда нужно установить значение бита.


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;
}

Взято отсюда

Оставить комментарий

Ваш email не будет опубликован. Обязательные поля отмечены *

Вы можете использовать это HTMLтеги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Смотреть фильмы онлайн