0
点赞
收藏
分享

微信扫一扫

(二-3)原码,反码,补码和移码【计算机组成原理】

查拉图斯特拉你和他 2022-01-31 阅读 75
经验分享

文章目录

原码,反码,补码和移码



无符号数



有符号数:

定点整数和定点小数最高位是符号位,一位表示符号位,七位表示数值位。(前提机器字长是8位)

0作符号位表示正的,1作符号位表示负的

可以用原码,反码,补码来表示定点整数和定点小数,还可以用移码来表示定点整数。



原码:

原码整数的范围就是**-127 — 127**。
真值0 对应着两种状态,-0(1000 0000)和+0(0000 0000)

image-20220129200619627

反码:

如果符号位是0,则反码和原码相同。(正数不变

如果符号位是1,则数值位全部取反。(负数的数值位要取反

image-20220129201009617

补码:

正数的补码 = 原码

负数的补码 = 反码的末位+1(要考虑进位)

image-20220129201634979
  • 关于补码中的0
image-20220129201800940 image-20220129202621228


移码:

在补码的基础上将符号位取反

注意:移码只能用于整数

image-20220129203019538

移码和补码的关系是一一映射的。

image-20220129203201597

如果把移码整个都看作是无符号位数,当真值增大的时候,对应的无符号数也是在逐一递增的。




以上总结

image-20220129203649647

原码和补码的真值0有两种表示。

补码和移码的真值0只有一种表示。所以补码和移码可以多表示一个负数


  • 练习
image-20220129204220544
  • 小技巧

已知x 的补码,怎么快速求-x 的补码?

将符号位和数值位全部取反,末位+1

image-20220129204748473




各种码的作用


使用原码计算,如果是无符号数进行计算,那么加法和减法的结果都是正确的;但是如果是有符号数进行计算,那么加法运算必须按照减法运算的规则来运算才能得到正确的答案。如果加法使用加法器,减法使用减法器,那么就会导致硬件的设计成本增加,复杂度增加,这个时候就有人考虑到可否使用加法来代替减法。-3对12取余的结果是9,9对12取余的结果也是9。在模12的条件下,-3和9是等价的。-3和9也是互补的,两者的绝对值之和 = 模值。举例子:1+(-3) = 1+9。因为-3和9是一模一样的。

如果在模m的情况下,找到**负数**的补数,才可以用正数的加法来代替减法。将x - y改成加法(这里规定y必须是正数),就需要先找出-y的补数z,补数z和-y是一模一样的,所以z可以代替-y来进行运算,这样减法就变成了加法。已知模(-y的绝对值)就可以算出-y的补数:z(y的补数) = 模 -(-y的绝对值)。

举个例子:14 -14 ,这里需要算出负数的补数,-14的补数 = 模 - (-14的绝对值) = 1,0000 0000 - 0000 1110 = 1111 0010,这个1111 0010就是-14的补数,也就是-14的补码。是即将代替-14的作加法的数。然后就是14 + 刚求的补码就是最后的答案。0000 1110 +1111 0010 = 1,0000 0000 = 0。

通过以上的例子也反映了补码的作用,让减法操作变成加法操作,节省硬件成本(在ALU中只需要设计加法电路,不用设计减法电路)。

举报

相关推荐

0 条评论