byte
。我知道在任何给定时间,byte
中只有一个比特被设置。例如:
unsigned char b = 0x20; //(00100000) 第6个最高位被设置
我目前使用以下循环来确定哪个比特被设置:int getSetBitLocation(unsigned char b) {
int i=0;
while( !((b >> i++) & 0x01) ) { ; }
return i;
}
如何最有效地确定位设置的位?我能否在不迭代的情况下完成这个操作?