什么是原码、反码、补码?

如题所述

计算机系统中,数值,一律用补码表示和存储。

计算机中,并没有原码和反码

为什么用补码?

就是为了:简化硬件,节约成本。

因为,负数,是可以用一个正数(补码)代替的。

如: 24 - 1 = 23

   24 + 99 = (一百) 23

忽略进位,用 +99 就可以代替-1。

+99,就是-1 的补数。 计算机用二进制,就称为:补码。

用补码(正数)代替了负数,那么,计算机中,就没有负数了。

那么,在计算机中,就只有加法运算了。

所以,在计算机中,只需设置一个加法器,便可加减通吃了。

-------------


定点整数的补码(mod=2^n)定义式如下:

  [X]补 = X      ( 0 ≤ X < 2^(n-1) )

  [X]补 = 2^n - | X |  (-2^(n-1) ≤ X < 0 )

当 n = 8 时,[-128]补 = 256-128 = 1000 0000B。

-------------

定点小数的补码(mod=2)定义式如下:

  [X]补 = X     ( 0 ≤ X < 1 )

  [X]补 = 2 + X   (-1 ≤ X < 0 )

因此,-1.0 的补码为 2 +(-1) = 1.0000。

-------------





温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-11-27
1):补码加法公式
   [X+Y]补

[X]补
+
[Y]补
2):补码减法公式
[X-Y]补
=
[X]补-[Y]补
=
[X]补
+
[-Y]补
其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.
第2个回答  2021-03-18
计算机中,只有补码,没有原码反码。
只要掌握了补码,即可。
小数补码的定义式:
  [X]补 = X    ; 0 ≤ X < 1
  [X]补 = 2+X  ; -1 ≤ X < 0
 
例如:
  X = + 0.010 1000, 则 [X]补 = 0010 1000。
  X = -0.011 1000, 则 [X]补 = 1100 1000。
第3个回答  2020-01-09
第4个回答  2020-03-10
1、原码的定义
原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。
①小数原码的定义
[X]原
=
X
0≤X
<1
1-
X
-1

X

0
例如:
X=+0.1011
,
[X]原=
01011
X=-0.1011
[X]原=
11011
②整数原码的定义
[X]原
=
X
0≤X
<2n
2n-X

2n

X

0
原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:
最大值为0.1111111,其真值约为(0.99)10
最小值为1.1111111,其真值约为(一0.99)10
当用8位二进制来表示整数原码时,其表示范围:
最大值为01111111,其真值为(127)10
最小值为11111111,其真值为(-127)10
在原码表示法中,对0有两种表示形式:
[+0]原=00000000
[-0]
原=10000000
2、补码的定义
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。
①小数补码的定义
[X]补
=
X
0≤X
<1
2+
X
-1

X

0
例如:
X=+0.1011,
[X]补=
01011
X=-0.1011,
[X]补=
10101
②整数补码的定义
[X]补
=
X
0≤X
<2n
2n+1+X

2n

X

0
补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:
最大为0.1111111,其真值为(0.99)10
最小为1.0000000,其真值为(一1)10
采用8位二进制表示时,整数补码的表示范围:
最大为01111111,其真值为(127)10
最小为10000000,其真值为(一128)10
在补码表示法中,0只有一种表示形式:
[+0]补=00000000
[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)
所以有[+0]补=[+0]补=00000000
3、反码的定义
机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X]反。
反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。
①小数反码的定义
[X]反
=
X
0≤X
<1
2-2n-1-X
-1

X

0
例如:
X=+0.1011
[X]反=
01011
X=-0.1011
[X]反=
10100
②整数反码的定义
[X]反
=
X
0≤X
<2n
2n+1-1-X

2n

X

0
例1.
已知[X]原=10011010,求[X]补。
分析如下:
由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即
[X]原=10011010
[X]反=11100101
十)
    
1
[X]补=11100110
例2.
已知[X]补=11100110,求[X]原。
分析如下:
对于机器数为正数,则[X]原=[X]补
对于机器数为负数,则有[X]原=[[X]补]补
现给定的为负数,故有:
[X]补=11100110
[[X]补]反=10011001
十)
1
[[X]补]补=10011010=[X]原本回答被网友采纳