假定某台计算机的机器数占8位,使用补码实现这两个数的加法运算:55 - 67。
------------------
计算:-67 + 55=?
-67 = -1000011
+55 = +0110111
换成八位补码,再相加:
[-67]补 =1011 1101
+ [+55]补 =0011 0111
---------------
1111 0100 = [-12]补
即:-67 + 55 = -12。
带符号数,有三种表示方法,即:原码、反码和补码。
但是,在计算机系统中,数值一律用补码来表示和存储。
所以,在计算机系统中,原码和反码,都是不存在的。
-------------------
对于八位计算机:
数字 0 的存放形式是:0000 0000。
数字+1,就加上一:0000 0001。
数字+2,就再加一:0000 0010。
数字+3,依此类推:0000 0011。
。。。正数,你就依次加一。。。
+55,存放就是:0011 0111。
=============
负数,就是从零,依次减一。
数字-1,也就是:0000 0000-1,
保留八个位,可得:1111 1111 = 255(十进制)。
数字-2,就再减一:1111 1110 = 254。
数字-3,继续减一:1111 1101 = 253。
。。。继续依次减一。。。
-67,就减到了:1011 1101。
以上,是数值在计算机中的存放形式,即:补码。
-------------------
八位补码的计算公式:
负数的补码: 2^8 - 该负数
(如果需要二进制,你就再转换一下。)
正数,不需要变换,也不可以变换。
所以,正数,不存在补码。
补码,完全是由二进制加一减一自然形成的,和原码反码没有任何关系。
-------------------
计算: 55-67 = -12。
在计算机中,要用补码代替负数,把减法转换为加法运算。
计算过程如下:
55=0011 0111
-67 补码=1011 1101
--相加-------------
得: (0) 1111 0100 = -12 的补码
舍弃进位,只保留八位,结果完全正确。
-------------------
原码和反码,都没有简化硬件的功能。
求某一个数值的补码,也不需要原码和反码。
所以,原码和反码,都没有任何用处。
在计算机中,原码和反码,也不存在。
那么,原码和反码,都是多少? 管它呢!