我有一个作业分配来计算整数值的按位否定。它说512进入-513。
我有一个解决方案,做x = 512 y = 512*(-1)+(-1)
。
这是正确的方法吗?
我认为你需要首先否定并添加1。
-x = ~x + 1
所以
~x= -x -1
此属性基于负数以二进制补码表示的方式。要在n位上表示负数$ A $,可以使用| A |的补码到2n,即数字2n- | A |
很容易看出A + ~A = 111 ... 11,因为加法中的位总是0和1而111 ... 111就是2n或2n-1之前的数字。
作为 - | A |由2n- | A |编码,A + ~A = 2n-1,我们可以说-A = ~A + 1或等效~A = -A-1
任何数字,无论是积极的还是消极的都是如此。并且~512 = -512-1 = -513