计算机组成与结构(笔记)

原码、反码、补码

2020-11-02  本文已影响0人  Wovw

在计算机中表示的带符号的二进制数称为“机器数”(用形式上的码表示真实的数)。机器数有3种表示方式:原码、反码和补码。

1.原码

机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后。

原码是与真值最接近的一种表示形式。

原码的定义:

[X]原 ={ X                      (0 ≦ X <1)

                1 - X = 1 + |X|  (-1 < X ≦ 0)}

即[X]原 = 符号位 + |X|

例:X = -0.1011,[X]原 = 1-X=1.1011

数值零的真值有 +0 和 -0 两种表示形式,其原码也有两种表示形式:[+0]原 = 00000,[-0]原 = 10000

当运算结果不超出机器能表示的范围时,运算结果仍以原码表示。

缺点:在机器中进行加减法运算比较复杂。当两数相加,先要判别两数符号,同号相加,异号相减。而进行减法运算又要先比较两数绝对值的大小,再用大绝对值减去小绝对值,最后还要确定运算结果的正负号。

2.反码(one's complement)

机器数的最高位为符号位,0表示正数,1表示负数。其余取反。

运算

反码零有两种表示形式:

[+0]反=0.0000      [-0]反=1.1111

缺点:运算中在最高位有进位时,要在最低位+1,此时要多进行一次加法运算,增加了复杂性,又影响了速度,因此很少采用。

3.补码

机器数的最高位为符号位,0表示正数,1表示负数。

串行求补:从末位开始,连续的0不变,第一个1也不变,其余取反。

补码的定义:(反码+1)

[X]补 = { X                        (0 ≦ X < 1)

              2 + X = 2 - |X|    (-1 ≦ X < 0)}

即 [X]补 = 2 · 符号位 + X    mod2

此处,2为十进制数,即二进制的10。

例:X = -0.1011,则[X]补 = 2+X=1.0101

数值零的补码表示形式是唯一的:[+0]补 = [-0]补 = 0.0000。可根据补码定义计算:

当X=-0.0000,[X]补=2+X=10.0000+0.0000=10.0000=0.0000    mod 2

当补码加法运算的结果不超出机器范围时,可得出以下重要结论:
(1)用补码表示的两数进行加法运算,其结果仍为补码
(2)[X+Y]补 = [X]补 + [Y]补
(3)符号位与数值位一样参与运算

例:X = +0.1011        Y = -0.1011

                          ↓

    [X]原 = 0.1011      [Y]原 = 1.1011

    [X]反 = 0.1011      [Y]反 = 1.0100

    [X]补 = 0.1011      [Y]补 = 1.0101

由此可见,正数的原码、反码、补码的表示形式相同(三码合一),而负数则各不相同。

上一篇下一篇

猜你喜欢

热点阅读