用程序试了一下,为什么全等于零。

img


用程序调试了一下怎么全等于零啊,真的不会了,可以有人教一下吗,真的谢啦

你好,我们简单过一下ABD
A:(~k+1) = -k,所以k + (-k) = 0
B:根据异或的归零律,(k ^ k) = 0
D:因为~k所有位都是与k相反的,所以两者与运算不可能有哪怕一个位是相同且都为1的
那么对于C有两点:

  1. 有符号整型(即int)进行右移,如果k是负数,右移后是补1的,我们把问题简化成2位整数,如果k=10(二进制)那么右移一位后是11(即补一,因为10是负数)
  2. 其次是他只移位了31位,所以如果第32位是1,那么移位后还会剩下一个1没有被移走

以上