专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

[关于补码]fffffff8为什么是-8?解决思路

发布时间:2010-06-14 15:38:44 文章来源:www.iduyao.cn 采编人员:星星草
[关于补码]fffffff8为什么是-8?
1.正向的计算网上书上都有很多了,而且大多是十进制的,没有十六进制的,但是反过来怎么推?就是已知fffffff8的时候怎么推出它是-8?
2.有没有专门的十六进制补码转十进制的工具?

------解决方案--------------------
1.16进制-> 10进制方法:首先判断其最高位,若大于等于8则该数为负,接着将其求补,因为根据运算法则,绝对值相同的数正负数互补,故求补后该16进制数为正,接着将其化为对应的10进制形式(此时是10进制正书),最后因为之前判断出其为负,在该10进制数前加上负号即可。

2.尚未发现,不过知道了方法,可以自己写一个。
------解决方案--------------------
一切源于补码的定义,n位二进制数的补码为:2^n+x (0> x> -2^(n-1))
x=-8 即-0x00000008
x(补)=0x100000000-0x00000008=0xfffffff8
求原来的x只要再对x的补码求补,它们是互为补码关系
------解决方案--------------------
如一楼所说:
有符号十六进制数到十进制数的转换, 用以下步骤可以将有符号十六进制数转换为十进制数:
1:如果原十六进制整数是负数,那么首先求其补码,否则保持不变.
2:将上一步的结果转换为十进制数,如果原数为负数,那么在十进制整数的开头加一负号.
(可以通过十六进制整数的最高位来判断其正或负,如果最高位> =8,那么其为负,如果最高位 <=7,那么其为正)

初学不对之处请原谅!!!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: