原码、补码、反码、移码

原码、补码、反码、移码

原码

原码表示简单明了,符号位用“0”表示正数,符号位“1”表示负数,并易于和真值转换。但用原码进行加减运算时,却带来了许多麻烦。

真值x [x]原
0.1101 0.1101
-0.1101 1.1101
-0.0011 1.0011
-1100 1,1100
+0.0000 0.0000
-0.0000 1.0000

可见 [+0]原 不等于 [-0]原

补码

如果能找到一个与负数等价的正数来替代负数,就可以把减法操作用加法替代。而机器数采用补码时,就能满足此要求。

补数

  • 一个负数可用它的正补数来替代,而这个正补数可以用模加上负数本身求得。

  • 一个正数和一个负数互为补数,它们绝对值之和即为模数。

  • 正数的补数即正数本身

反码

反码通常用来作为由原码求补码,或者由补码求原码的中间过渡。

三种机器数的联系:

  • 三种机器数的最高位均为符号位。
  • 当真值为正时,三种机器数的表示方式均相同,即符号位用“0”表示,数值部分与真值相同。
  • 当真值为负时,三种机器数的表示方式不同,但其符号位都用“1”表示,而数值部分有这样的关系:
    • 原码“求反加1”得补码,原码“每位取反”得反码

移码

当真值用补码表示时,由于符号位和数值部分一起编码,与习惯上的表示法不同,因此人们很难从补码的形式上直接判断其真值的大小。

如果对每个真值加上2^n(n为整数的位数),代码本身就可以看出真值的实际大小。

移码为补码基础上,符号位取反。

十进制数 x [x]补 [x]移
21 0,10101 110101
-21 1,01011 001011
31 0,11111 111111
-31 1,00001 000001
posted @ 2023-04-19 22:48  某科学的撒把豆子  阅读(283)  评论(0)    收藏  举报