带符号数的表示, 概念辨析:真值、机器数、原码、反码、补码、移码

1. 真值
真值即用十进制, 或二进制等进制表示的一个数

2. 机器数
理解为机器中使用的数, 即二进制表示的数, 两种, 无符号数和有符号数

3. 原码
原码是与真值形式最接近的机器数, 最高位为符号位(0 表示正数, 1表示负数), 符号位后面是数值部分, 用绝对值表示, 举例来说, -0为1000,-7为1111,5为0101, 另从50年代开始,浮点数的小数用原码定点小数表示。

4. 反码
反码是一种特殊补码形式的机器数, (用原码表示的数)正数的反码是它本身, 负数的反码是符号位保持不变, 其余各位取反。

5. 补码
正数的补码是它本身, 负数的补码是符号位不变, 其余各位取反后加1

6. 移码
移码适合比较大小, 真值大时, 对应的移码也大, 真值小时, 对应的移码也小。
移码:将每一个数值加上一个偏置常数bias。

通常:当编码位数为n时
1. bias取2^n-1
2, bias取2^(n-1)-1
当bias为 2^(n-1)-1 时,移码和补码仅第一位不同, 此时补码和移码之间的关系为, 补码的数值部分不变,符号取反,即得移码。由移码也可得补码。

举例:E(biased) = E + 2^3(bias = 2^3 = 1000B)可以得到:-8(+8) ~ 0000B,0(+8) ~ 1000B

用途:移码用来表示浮点数的阶(便于浮点数加减运算时的对阶操作,比较大小)。

举例:1.01 * 2^(-1) + 1.11 * 2^3 中,运用移码可以简化比较:

将原式变为 1.01 * 2^(-1+4) + 1.11 * 2^(3+4) 就可以得到011(3)<111(7)
门户:Portal

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值