【发布时间】:2016-11-07 02:07:47
【问题描述】:
我在阅读面试准备书时发现了一个关于 1 的补码的有趣属性。
该属性表示给定一个数字 X,我们可以使用 1 的补码生成一个显示第一个设置位(从右到左)的掩码,如下所示:
X & ~(X - 1) 其中~ 代表 1 的补码。
例如,如果X = 0b0011 那么
0b0011 & 0b1101 = 0b0001
我了解到作者正在使用X-1 来翻转右侧的第一个非零位。但我很好奇他是如何想出这样的想法的十。
这是我第一次在 StackOverflow 上发帖,如果这个问题不属于这里,我深表歉意。
【问题讨论】:
标签: bit-manipulation bitwise-operators