识别 64 位掩码中所有设置位位置的最佳方法是什么。假设我的位掩码是 0xDeadBeefDeadBeef,那么最好的方法是识别其中设置位的所有位位置。
long long bit_mask = 0xdeadbeefdeadbeef;
unsigned int bit_pos=0;
while(mask) {
if((mask&1)==1) {
printf("Set bit position is:%d \n",bit_pos};
}
bit_pos++;
mask>>=1;
}
一种方法是循环遍历它,并检查是否设置了一个位,如果设置了,则返回计数位置并继续循环直到 MSB,因此对于 64 位,我将迭代直到遍历所有设置位还是遍历所有 64 位,如果设置了 MSB,但必须有更好的方法吗?