对数字及其两个补码进行and
运算时是否有语义含义?
例如:
int x = 31;
int result = x & (-x)
结果是否具有任何语义含义?
答案 0 :(得分:0)
结果将设置一位,这是x
中最不重要的设置位。换句话说,结果表明“圆”x
对于奇数的2:1的幂,2的倍数是2,4的倍数是4等等。
这是因为-x
等于~x + 1
。当然,x & ~x
为0,但通过向~x
添加1,~x
中的所有最低位1将变为0,~x
中的最低位0将成为1,这将是x
和~x + 1
共有的唯一位。