带符号数的补码

带符号数的补码

email:778138708@qq.com

  • 正数的补码与其原码相同,最高位为符号位,其他各位为数值位。
  • 负数的补码为它的反码加1。

[+0] = [+0] = 00000000
[-0] = [-0] + 1 = 11111111 + 1 = 00000000

带符号数的补码表示的数值范围

1000 0001B为-127的补码
1000 0000B为-128的补码

带符号数补码的特点

  • 0的补码表示是唯一的,没有+0和-0之分。
  • 一个字节的有符号二进制数的补码所能表示的范围为:-128 ~ +127。
  • 字的补码表示范围为:-32768 ~ +32767。

带符号数补码的位权

-128的补码为1000 0000B
一个字节的带符号数的补码的位权

-27 26 25 24 23 22 21 20
-128 64 32 16 8 4 2 1

例 通过补码求真值,补码10010101B = -27 + 24 + 22 + 20 = -107D

比较无符号数和有符号数的位权

  • 无符号数的位权
27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1

有符号数补码11101010的真值为:-27 + 26 + 25 + 23 + 21 = -22D
有符号数补码01101010的真值为:26 + 25 + 23 + 21 = 106D

补码转换为真值

  • 补码转为原码,求真值:再次取补得到它的原码,再转换为真值。

例 已知[X] = 11101010,求X的真值。
解:
原码为:10010101 + 1 = 10010110
真值为:-(24 + 22 + 21)= -22

  • 利用补码的位权,求真值。

补码11101010的真值 = -27 + 26 + 25 + 23 + 21 = -22D

posted @ 2022-04-04 10:09  jason2018  阅读(2078)  评论(0编辑  收藏  举报