数字和它的两个补码

时间:2016-04-10 05:03:49

标签: binary numbers twos-complement

对数字及其两个补码进行and运算时是否有语义含义?

例如:

int x = 31;
int result = x & (-x)

结果是否具有任何语义含义?

1 个答案:

答案 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共有的唯一位。