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;
}
1 つの方法は、それをループして、ビットが設定されているかどうかを確認し、設定されている場合は、カウント位置を返し、MSB までループを続けることです。したがって、64 ビットの場合は、設定されたすべてのビットをトラバースするまで繰り返します。または、MSB が設定されている場合は 64 ビットすべてがトラバースされますが、それを行うためのより良い方法があるはずですか?