什么是一个数的原码、反码和补码表示

如题所述

原码表示法,就是数值所对应的二进制值。最高位设0为正,设1为负;
对于8位二进制,-3对应10000011, 3对应00000011;
反码表示法,正数的反码对应其二进制值,负数的反码为对应其绝对值的二进制值逐位取反;
例如,-3对应11111100,3还是00000011;
补码表示法,非负数的补码对应其二进制数值,负数的补码为它的反码+1;
-3对应11111101,3还是00000011。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-01-12

在计算机中,并不存在原码反码。

在计算机中,只用补码表示带符号数。

使用了补码,就可以用加法,代替减法运算,从而简化计算机硬件。

------

理解补码,要先从补数开始。

时针转一圈,周期是 12 小时。

倒拨 3 小时,就可以用正拨 9 小时代替。

9 就是-3 的补数。 9 = 12-3。

同理,倒拨分针 X 分,就可以用正拨“60-X”代替。

60 是分针的周期。

------

对于两位十进制 0~99,周期就是一百。

这时,减一,你就可以用 +99 代替。

   25 - 1 = 24

   25 + 99 = (1) 24

结果取两位,舍弃进位。这两种算法,功能就是相同的。

   99,就称为-1 的补数。

   98,就是-2 的补数。

   。。。

利用补数,就可以用加法,代替减法运算。

补数怎么求?

  正数,不需要求补数。

  负数的补数 = 周期 + 该负数。

------

计算机使用二进制,补数,就改称:补码。

八位二进制,共有 256 个数字。负数的补码 = 256+该负数。

16 位二进制,共有 2^16 个数字。负数的补码 = 65536+ 该负数。

正数,不需要做变换。或者说,正数本身就是补码。

在八位时:

 -1 的补码是:256-1 = 255 = 1111 1111(二进制)。

 -2 的补码是:254 = 1111 1110。

 -3 的补码是:253 = 1111 1101。

 。。。

 -128 补码:128 = 1000 0000。

------

有了补码,计算机仅需要一个加法器,即可够用。

而原码和反码,不具备这种能力。

所以,在计算机中,并没有原码和反码。

原码和反码,究竟是多少,就不必关心了。

第2个回答  2016-01-06
一,原码
例如:
X1=+0.1011 X2 = -0.1011 X3 = 1101
原码X1原 = 0.1011 X2原= 1.1011 X3原=01101 X4原 = 11101
就是在原来的数前面加上1或者0表示符号。0为正1为负

二,反码
例如,X1=0.1011 X2=-0.1011 X3 = 1001 X4=-1001
X1反=0.1011 X2=1.0100 X3 = 01001 X4=10110
反码就是正数不变,然后在前面加上0表示正数,负数把0变1,1变0,然后在前面加上1表示负

三,补码
反码基础上末尾加上一个1,比如‘
X2 = -0.1011
x2反码=1.0100
x2补码 = 1.0101
第3个回答  2022-10-18

计算机内部,用的是二进制,称为机器数。

这些机器数,可以代表:数字、字符、汉字、声音、图像。。。

八位二进制:称为一个字节。

数值范围是:0000 0000 ~ 1111 1111。

对应十进制:0 ~ 255,共有 256 个。

作为数字使用,它们都是正数,就是 0~ 255。

但是,正数,也可以“当做负数”来使用的。

你看 2 位 10 进制数:

  25 - 1 = 24

  25 + 99 = (一百) 24

略去进位,保留 2 位数,+99 就能当做-1 使用。

用正数,不仅可以代替负数,顺便,还消除了减法运算。

在计算机中采用这种算法之后,只需用一个加法器,便可走遍天下。

那么,只要你略去进位,255 = 1111 1111 就能代替-1 使用了。

同理,254 = 1111 1110,就能当做-2 了。

。。。

就是说,舍去进位,128~255,就都相当于负数:-128~-1。

         128~255,就是:负数的补码。

如果,你保留进位,128~255,就还都是正数。

即:二进制机器数,是不是补码,完全取决于你算法。

  二进制的补码,与原码反码毫无关系。

“取反加一符号位不变”的说法,都是瞎说。并没有什么根据。



相似回答