举个例子
10 的二进制数: 0000 1010
10 的负数(取反+1),分两步走:
- 10 二进制取反:
1111 0101
- 10 二进制取反+1(-10):
1111 0110
将10 和 -10 进行与运算
0000 1010
1111 0110
&
运算---------
0000 0010
得到了 10 的二进制位最左边的 1
如何理解
负数在计算机中的表示是:取反+1
拿一个二进制举例:
... ... 0100 0000
它这个 1的位置比较高,但是它取反之后的结果呢?
... ... 1011 1111
之前不为 0 的位,全部变成了 1。
而之前为 1的位现在变成了0
现在,这个0
右边的所有位都是 1
(取反前全是 0)
... ... 011 1111
(负数取法+1)一旦 +1
,那么这个 0
之前的所有 1
都会进位,从而导致这个 取反