关于十六进制和十进制的转换:请问FFFE(H)是如何算出等于-2的?

ScorpioZZR 2004-05-02 01:20:38
比如FFFF = -1;FFFE = -2这种,我想知道由FFFE 如何算出等于-2的?
我想看看这个演算过程,谢谢!
...全文
1563 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ScorpioZZR 2004-05-03
  • 打赏
  • 举报
回复
终于找到解答者了,非常感谢!立刻揭帖!
payq 2004-05-03
  • 打赏
  • 举报
回复
大部分计算机表示有符号数时都使用二进制补码,正数的补码为原码,负数的补码是将其地应的原码是将其对应的原码的各位(除符号位外)按位求反,然后加一。
[+2]补码=0000 0000 0000 0010
[-2]补码=1111 1111 1111 1101+1=1111 1111 1111 1110=F F F E
我觉得是这样的呵呵。
ScorpioZZR 2004-05-03
  • 打赏
  • 举报
回复
天啊, 我不是要程序,而是手算的过程 :(

楼上的,我也会转换到1111 1111 1111 0011 ,但是到这一步后如何算出有符号数是多少啊?
vctony 2004-05-02
  • 打赏
  • 举报
回复


首先要明确此立即数是有符号操作数还是无符号操作数,才能得出正确的结果.

如果我们能确定是有符号操作数那就可以将其最高位视为符号位所以就是负数,
反之如果是无符号操作数那就是正数.

所以,FFFE=-2是不能成立的.
但是, -2=FFFE,这里-2是立即数,而FFFE是其机内码即补码.
换句话说,66534=FFFE,这里65534是立即数,FFFE是其机内码.

就是说在将机内码取出时,在不知道其为有符号还是无符号的情况下,结果是有两种可能的.
汇编中对符号是很敏感的.

9907yruby 2004-05-02
  • 打赏
  • 举报
回复
你是要程序吗?
我的心算过程如下:
fff3对应于二进制的1111 1111 1111 0011
如下结果就是二进制转化为十进制了
ScorpioZZR 2004-05-02
  • 打赏
  • 举报
回复
楼上的,没关系,能不能把过程直接给我写出来看看?
谢了~
dunkel 2004-05-02
  • 打赏
  • 举报
回复
抱歉, 我好像理解错了楼主的意思了 :(
dunkel 2004-05-02
  • 打赏
  • 举报
回复
如果是作为符合数的话, 应先看是否为负数, 如果是的话, 输出 '-', 再将负数 neg , 下面就和正数一样地输出了
dunkel 2004-05-02
  • 打赏
  • 举报
回复
; 假定值 0FFF3h 在 AX 中
test ax, ax ; 是负数吗?
jns l_trans ; 不是负数, 转去进行转换
output '-' ; 是负数, 则先输出负数符号 '-'
neg ax ; 再取绝对值: FFFF3 -> 000D
l_trans:
... ; 下面就是正数的转换了
ScorpioZZR 2004-05-02
  • 打赏
  • 举报
回复
假如已知是一个有符号数了呢?
到底过程怎么计算的啊?
比如,FFF3 等于十进制 的多少?你们怎么算出来呢?
ScorpioZZR 2004-05-02
  • 打赏
  • 举报
回复
能不能给我具体的运算过程?
Writer 2004-05-02
  • 打赏
  • 举报
回复
用补码来表示负数x,用2的n次方减用X的绝对值表示。

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧