微机原理有符号数的真值与补码间的转换

有符号数的真值与补码间的转换

之前上课的时候一直没怎么弄清有符号数的真值与补码间怎么转换的,老师上课只讲了一下公式怎么用,但也没详细说是怎么来的,后来我想了一下,也差不多弄懂了。
为什么这里只讲有符号数而不讲无符号数呢,因为无符号数的真值 = 补码

补充知识:

正数的 补码=原码=反码
负数的 反码=原码最高位不动,其他位取反(最高位为符号位,1表示 负数,0表示正数)
补码=原码最高位不动,其他位取反,再+1(其实就是反码+1)
无符号数是指最高位不做符号位使用,有符号数是指最高位为符号位,1表示 负数,0表示正数 。

表示说明:数字后加B表示二进制,加了H表示16进制

转换关系

这里就直接举一个例子更好说明:

例如有符号数-5,这里选择用8位二进制表示(一定要弄清用要转换的数用几位二进制表示,后面会提到为什么)

首先我们来探讨一下有符号数的绝对值与其补码之间有什么关系:

-5的绝对值: |-5| = 5 = 05H(这里统一用16进制,两位十六进制表示8位二进制)
-5的补码:(原码)1000 0101 B -->(反码)1111 1010 B-->(补码)1111 1011 B= FBH

这个时候将绝对值与补码相加,你会发现一个很有意思的事:

05H  +  FBH = 100H

也就可以大胆得出:

有符号数真值的绝对值 + 其补码 = 100H(若干个0,取决于用多少位二进制表示)

那么,已知有符号数,求其补码就好办了:

其补码 =  100H — 有符号数真值的绝对值

没错,不用怀疑,求补码就是这么求的,所以,

-5的补码为(8位二进制表示):100H-05H = FBH   

不用记公式,就记有符号数真值的绝对值和它补码的关系,在脑海中大概推导一下就知道怎么来的;

再举一个例子,求-25的补码,一样的 100H - 19H(25的十六进制) = E7H
也可以自行验证一下,这里就不加验证了

要是已知补码要你求真值,那不也是一样的吗,还记得那个关系吗

有符号数真值的绝对值 + 其补码 = 100H(若干个0,取决于用多少位二进制表示)

那 么

真值 =   —(100H — 其补码)

注意符号一定不要漏了!!!,负的,一定要在前面加上负号!

举个例子 已知补码 FBH,求其真值
首先其 绝对值 = 100H - FBH = 05 H
再加负号!!! 真值 = -5 负号不能漏

这里补充一个知识,关于如何判断求出来的真值要不要加负号:
这里讨论的是有符号数,既然是有符号数,那直接看他的补码,有符号数的补码最高位是不变的,补码最高位0代表正数,最高位1代表负数(注意这里讨论的是有符号数,无符号数不存在这回事)。所以只要补码最高位为1,这个数就是负数,那么求出来的真值就要加负号。
转换到十六进制判断就是,只要16进制最高位为8~F,就都表示的是负数,(1000 XXXX与1111 XXXX),例如补码为83H、C6H等的就都是负数.
你只要把这个关系理清楚了,以后就都不会再忘记了

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值