我正在编写一个编程项目,我需要做的一件事是写一个函数,它返回一个掩码,标记最低有效位的位。关于如何使用按位运算符确定位置的任何想法?
ex:
0000 0000 0000 0000 0000 0000 0110 0000 = 96
What can I do with the # 96 to turn it into:
0000 0000 0000 0000 0000 0000 0010 0000 = 32
我一直把头靠在墙上几个小时试图解决这个问题,我们将非常感谢任何帮助!
答案 0 :(得分:46)
x &= -x; /* clears all but the lowest bit of x */
答案 1 :(得分:2)
更易读的代码:
int leastSignificantBit(int number)
{
int index = 0;
while ((~number) & 1) {
number >>= 1;
index++;
}
return 1 << index;
}
答案 2 :(得分:0)
为确保获得正确的位/值:
x & 1
x & -x
log2(x & -x)
这是JavaScript的外观:
let x = 0b1101000;
console.log(x & 1); // 0 (the farthest-right bit)
console.log(x & -x); // 8 (the farthest-right 1 by itself)
console.log(Math.log2(x & -x); // 3 (the zero-based index of the farthest-right 1)