在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值一并处理,不需要单独的处理符号位而降低复杂度,使得加法和减法也可以统一处理(为什么要用补码,好处是什么?)。
为了表示二进制数,如果直接用源码形式,需要额外的硬件(缺点)区分符号位0,1;
如果用反码,无需硬件分辨符号位,但是0由两种表达方式(缺点);
那么选用补码的话,0只有一种表达方式,而且比别的表达方式多表达一个数(优点)
十进制 | 原码 | 反码 | 补码 | 转换 |
---|---|---|---|---|
+3 | 011 | 011 | 011 | 原=反=补 |
+2 | 010 | 010 | 010 | 原=反=补 |
+1 | 001 | 001 | 001 | 原=反=补 |
+0 | 000 | 000 | 000 | 原=反=补 |
-0 | 100 | 111 | (1)000此处进位舍去 | 补=反+1(符号不变) |
-1 | 101 | 110 | 111 | |
-2 | 110 | 101 | 110 | |
-3 | 111 | 100 | 101 | |
-4 | 没法表示 | 没法表示 | 100 | |
备注 | 可以表示-4 |
用补码计算3-2,那就用(+)3的补码加上(-2)的补码
也就是011+110=(1)001 //进位要舍去,这样减法也可以用加法来运算,不用判断符号位;
计算1-3:
001
+
101
=110 (-2)
学习于百度百科,便于自己更好的理解补码_百度百科