带符号数,有三种表示方法,即:原码、反码和补码。
但是,在计算机系统中,数值一律用【补码】来表示和存储。
所以,在计算机系统中,原码和反码,都是不存在的。
对于八位机,数字 0,就是用八个 0 存储:0000 0000。
数字+1,就是加上一,即为:0000 0001。
。。。其他正数,就逐次加一吧 。。。
数字+99,就加到了:0110 0011。
--------
负数,你从零往下减,就得到了补码。
-1,即 0000 0000-1,要取其八位的结果。
所以,-1 就是用 1111 1111=255(十进制) 存储。
-2,当然就是以 254 = 1111 1110 存储了。
。。。其他负数,就是逐次减一。。。
-99,就是 256-99 = 157 = 1001 1101。
--------
以上就是补码。
负数的补码:【 2^n + 该负数 】,n 是补码的位数。
正数的补码: 正数,不存在补码。
--------
借助于补码,可把减法(或负数),转换为加法运算。
从而简化计算机的硬件。
如,计算: 7-3 = 4。在计算机中,改用补码相加。
列竖式如下:
7=0000 0111
-3的补码=1111 1101
--相加-------------
得: (1) 0000 0100 = 4
舍弃进位,只保留八位,结果完全正确。
所以,计算机中,只需配置一个加法器,就够用了。
------------
原码和反码,都没有简化硬件的功能。
所以,在计算机中,原码和反码,都不存在。
不存在的东西,都是什么呢?那就不用关心了。