要求一个数对应二进制最低位为1对应的数字lowbit,如lowbit(5),5的二进制位101,对应的结果就,001即1,lowbit(4),4的二进制位100,对应的结果就,100即4。
由于计算机采用二进制补码作为数学运算,所以可以用x&-x来求得
由于负数的补码就是原码取反加1,所以这样按位或可以得到从右侧起第一个
为1的数。
举例:
x=1,原码0001,x的补码就是0001,(以4位表示)
-x=-1,原码1001,-x的补码就是1111。
所以x&-x = 1 即是所求结果
附上python代码
def lowbit(x):
return x&-x