首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-03-28 
[关于补码]fffffff8为什么是-8?1.正向的计算网上书上都有很多了,而且大多是十进制的,没有十六进制的,但是

[关于补码]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,那么其为正)

初学不对之处请原谅!!!

热点排行