【发布时间】:2015-06-30 20:59:59
【问题描述】:
我正在按顺序打印十六进制数字,以便为 C 中的汇编程序制作操作码。除了位移为负时,我拥有一切完美的东西。现在我只有 3 个可用于置换的空间,当它是 -11(base 10) 时,我将其转换并得到 fffffff5 作为我的答案。我想限制这一点,以便只显示ff5。有没有办法做到这一点?由于限制打印正数时,数字永远不会大于7FF,所以我在那里没有问题。但是对于负数,它总是会打印 8 个十六进制数字,我只想要最右边的 3 个数字,有没有办法做到这一点?
【问题讨论】:
-
但是你知道0xfffffff5和0xff5是不同的值吗?
-
-
@CarlNorum 是的,这就是为什么在具有 32 位变量的 C 代码中需要特殊处理(再次读入时)。这就是我写这篇文章的原因,不知何故,如果唯一关心的是空格,我怀疑 OP 是否意识到这一点。
-
我认为他的意思是在他的指令编码中可用 3 个十六进制位值。也就是位移是一个12位的相对偏移量。
-
你是对的。我只允许在指令编码中使用 3 个十六进制位置值。我的电脑相对寻址的范围是 -2048 - 2047,只有 3 个十六进制值来表示数字。
标签: c io hex negative-number