为什么-x = ~x + 1呢?
二进制补码(two's complement):
公式:
例子:
其实举个简单的例子就是
第4位 | 第3位 | 第2位 | 第1位 | 第0位 |
-16 | 8 | 4 | 2 | 1 |
0 | 1 | 0 | 1 | 0 |
~运算符:
最简单的非运算就是翻转每一位,如果这一位是1翻转成0,如果是0翻转成1
~01101001 |
10010110 |
讨论:
这个时候如果
那么
那么我们把两个数相加,我们可以发现因为x和~x正好的是每一位都相反的,所以相加之后正好是,在二进制补码的表示下就是-1。
所以将一个变量和它的取反变量相加,必然等于-1
所以得出结论