1.负数的二进制表示方法
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。
2.二进制转化为整数
1.如果符号位为0,表示为正,直接将二进制数据翻译即可
2.如果符号位为1,表示为负,将数据-1取反.或者(取反+1)
如:
方法1:
源码: 11111111111111111111111111001110
-1: 11111111111111111111111111001101
取反: 00000000000000000000000000110010
方法2:
源码: 11111111111111111111111111001110
取反: 00000000000000000000000000110001
+1: 00000000000000000000000000110010
3.为什么使用补码
因为计算机的运算是一个加法器,只能做加法运算。因此,就有了补码和移位来运算其他的运算。
参考文章: