Определите, какой бит установлен в байте

у меня есть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;
}

Как наиболее эффективно определить положение установленного бита? Могу ли я сделать это без итерации?

Ответы на вопрос(8)

Ваш ответ на вопрос