负数的二进制表示与转换

来源:互联网 发布:centos 复制文件 编辑:程序博客网 时间:2024/05/17 01:25

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.为什么使用补码

因为计算机的运算是一个加法器,只能做加法运算。因此,就有了补码和移位来运算其他的运算。


参考文章:

http://junsky.iteye.com/blog/667373