Determine qué bit único en el byte se establece

tengo unbyte Estoy usando para bitflags. Yo sé esouno y solo uno poco en elbyte Se establece en cualquier momento dado.

Ex:unsigned char b = 0x20; //(00100000) 6th most bit set

Actualmente utilizo el siguiente bucle para determinar qué bit se establece:

int getSetBitLocation(unsigned char b) {
  int i=0;
  while( !((b >> i++) & 0x01) ) { ; }
  return i;
}

¿Cómo puedo determinar de manera más eficiente la posición del bit establecido? ¿Puedo hacer esto sin iteración?

Respuestas a la pregunta(8)

Su respuesta a la pregunta