已知补码如何求原码、真值

已知补码求真值

定点整数

正数

正数的原码、补码、反码都是一样的

负数

负数的原码就是补码的补码

如何求补码

最高位是符号位,符号位保持不变,其余位取反,取反后末位+1,得到的就是补码

例题

例题1

[ x ] 补 = 10101 [x]_补 = 10101 [x]=10101

  • 最高位为1(10101),说明x是一个负数

  • 那么[x]补的反码为(符号位不变,其余按位取反):
    11010 11010 11010

  • [x]补的补码为[x]补的反码末位+1
    11011 11011 11011

  • 所以x的原码为11011,真值为:
    − 1 × ( 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 ) = − ( 8 + 2 + 1 ) = − 11 -1 × ( 1×2^{3} + 0×2^{2} + 1×2^{1} + 1×2^{0}) \\ = -(8 + 2 + 1) = -11 1×(1×23+0×22+1×21+1×20)=(8+2+1)=11

例题2

[ x ] 补 = 00111 [x]_补 = 00111 [x]=00111

  • 因为最高位为0(00111),说明x是一个正数

  • 正数的原码、反码、补码都相同

  • 所以 [x]原 = 00111

  • x的真值为:
    1 × 2 3 + 1 × 2 2 + 1 × 2 0 = 7 1×2^{3} + 1×2^{2} + 1×2^{0} = 7 1×23+1×22+1×20=7

例题3

[ x ] 补 = 11100 [x]_补 = 11100 [x]=11100

  • 最高位为1(11100),说明x是负数

  • [[x]补]反(x补码的反码) = 10011

  • [[x]补]补(x补码的补码) = [[x]补]反 末位+1 = 10100

  • x的真值 = -22 = -4

定点小数

  • 定点小数中正数的格式为0.xxxx,负数的格式为1.xxxxx
    也就是小数点左侧的第一位是符号位

正数

正数的原码、补码、反码都一样

负数

负数的原码就是补码的补码

例题

例题1

[ x ] 补 = 1.1100 [x]_补 = 1.1100 [x]=1.1100

  • 符号位位1(1.1100),说明x是负数

  • [[x]补]反 = 1.0011

  • [[x]补]补 = [[x]补]反 末位+1 = 1.0100

  • x的真值 = -0.25

例题2

[ x ] 补 = 0.1110 [x]_补 = 0.1110 [x]=0.1110

  • x的符号位为0(0.1110),说明x是正数

  • 所以[x]原 = [x]补 = 0.1110

  • x的真值 = 0.5 + 0.25 + 0.125 = 0.875

例题3

[ x ] 补 = 1.0000 [x]_补 = 1.0000 [x]=1.0000

  • 这是一个较为特殊的补码,真值为-1
  • 事实上,负数的补码就是其绝对值的补数(a+b=模,则a与b互为补数)
    在这里插入图片描述
  • 32
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值