~ 10 = ?
10 的二进制为:1010
取反后为:1111 1111 1111 0101
则 1111 1111 1111 0101 的十进制为 -11,完整的运算为 ~ 10 = -11
很多人对负数的二进制的转换很迷惑,在这里为大家讲解下:
因为电脑的世界中只有 ‘ 1 ’ 和 ‘ 0 ’ ,所以在表示正负数的时候是从最高位看的,最高位如果为 ‘ 1 ’ 则为负数,如果是 ‘ 0 ’ 则是正数。
但是如果负数单纯是把最高位变为1的话,在运算中会出现不是我们想要的值。所以引入了:‘原码’,‘反码’,‘补码’。
正数的‘原码’,‘反码’,‘补码’都一样。
负数的‘反码’是对除了符号位(最高位)的‘原码’取反,而‘补码’是对‘反码’ + 1,而计算机所采用的就是‘补码’的方式。
示例:
-11的‘原码’是 : 1000 0000 0000 1011
求出对应的反码 : 1111 1111 1111 0100
求出对应的补码 : 1111 1111 1111 0101
所以在计算机中 ‘ -11 ’ 对应的二进制为 ‘ 1111 1111 1111 0101 ’