如何获得数字中最低位的位置?

Rip*_*de4 20 c bit-manipulation

我正在编写一个编程项目,我需要做的一件事就是写一个函数,它返回一个掩码,标记最低有效位的位.关于如何使用按位运算符确定位置的任何想法?

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
Run Code Online (Sandbox Code Playgroud)

我一直在靠墙砸了好几个小时试图解决这个问题,任何帮助都会非常感激!

R..*_*R.. 47

x &= -x; /* clears all but the lowest bit of x */
Run Code Online (Sandbox Code Playgroud)

  • 对于无符号类型,-x等效于TYPE_MAX - x + 1,相当于~x + 1.更容易理解为什么`x&= ~x + 1`有效. (18认同)
  • 你能解释一下吗?我想了解它是如何工作的.以及使用x和-x之间的区别?和x&= -x? (3认同)
  • Mod down - 问题是找到"位置" - 这个函数只返回该位的值 (2认同)