数字,存在计算机中,就是“码”。
在计算机中,没有原码和反码。
计算机,只是使用“补码”来存放“正负数”。
以八位为例:
数字 0 的存放形式是:0000 0000。
数字+1,就是加上一:0000 0001。
数字+2,就再加上一:0000 0010。
数字+3,就依此类推:0000 0011。
... ... 依次加一,即可。
----------
负数,就是依次减一。
数字 0 的存放形式是:0000 0000。
数字-1,就是减一:0000 0000-1,
只保留八位,可得:1111 1111(=255)。
数字-2,就再减一:1111 1110(=254)。
数字-3,继续减一:1111 1101(=253)。
... ... 然后你就依次减一吧 ... ...
----------
以上,是计算机中的补码。
---------
八位补码的表示范围:-128~+127。
八位补码的计算公式:
正数的补码:就是正数本身。
负数的补码:256-该负数。
(如果需要二进制,你就再转换一下。)
---------
补码,完全是由二进制加一减一自然形成的,和原码反码没有任何关系。
计算机中,也没有原码和反码。
所以,原码和反码,都没有任何用处。
补码的运算:听老师讲解真值、原码、反码和补码
举例说明如下:
真值 -11d = -1011b , 若字长8位, 则:
[-11d]原 =10001011b , 最高位是符号位,1表示负数,其余为数值位
[-11d]反 =11110100b , 将原码除符号位之外的各位取反得反码
[-11d]补 =11110101b ,将反码末位加1得补码
d是十进制数后缀 , b是二进制数后缀
若是正数,无须上述操作。原码=反码=补码=真值,例如:
真值20d =10100b, 若用8位字长机器数表示,则:
[20]原 =[20]反 =[20]补 =00010100b
最高位是符号位,0表示正数,符号右侧用两个0补齐8位