关于逻辑运算.我的理解是 7&8的值为1(真);但是看到一个表达式:x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0.这该如何理解?

问题描述:

关于逻辑运算.
我的理解是 7&8的值为1(真);但是看到一个表达式:x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0.这该如何理解?

7的二进制表示为0111,8的为1000这两个数据做与运算结果是0000,是假,但7&&8是真.
x=x&(x-1);不一定会实现将x的二进制最低位变为0,变为0的方法是x=x&(0xfffffffffffffffe),这里假设x是32位整数