Определите, какой бит установлен в байте
у меня естьbyte
Я использую для битовых флагов. я знаю этоодин и только один немного вbyte
устанавливается в любое время.
Пример:unsigned char b = 0x20; //(00100000) 6th most bit set
В настоящее время я использую следующий цикл, чтобы определить, какой бит установлен:
int getSetBitLocation(unsigned char b) {
int i=0;
while( !((b >> i++) & 0x01) ) { ; }
return i;
}
Как наиболее эффективно определить положение установленного бита? Могу ли я сделать это без итерации?