已知补码求真值

定点整数

正数

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

负数

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

如何求补码

最高位是符号位,符号位保持不变,其余位取反,取反后末位+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互为补数)
    在这里插入图片描述
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐