【发布时间】:2013-03-26 17:13:08
【问题描述】:
从Art of Assembly一书中,我复制了这句话:
在二进制补码系统中,H.O.数字的位是符号位。如果 H.O.位为零,数为正;如果 H.O.位为一,数为负数。例子:
对于 16 位数字:
8000h是否定的,因为 H.O.位是一。
100h是肯定的,因为 H.O.位为零。
7FFFh是肯定的。
0FFFFh是否定的。
0FFFh是肯定的。
我不明白最后两个例子。如果将这两个示例转换为二进制,则第一个得到0000 1111 1111 1111 1111,第二个得到0000 1111 1111 1111。为什么前者为负,后者为正?在我看来,两者的最高位都是 0,因此两者都应该是正数。
【问题讨论】:
-
在 16 位中,转换为 1111 1111 1111 1111 和 0000 1111 1111 1111。您的插图显示 0xffff 为 20 位。
-
啊。你能解释一下为什么 0FFFF 有 5 位数字吗?和FFFF一样吗,如果是,写成0FFFF有什么原因吗?
-
仔细检查来源。它可能会说 0xffff,而不是 0ffff。 0x 表示后面的数字是十六进制的。
-
我是直接复制粘贴的,本文中h用来表示十六进制。无论如何,我想这只是我拥有的 pdf 而不是约定?
-
nvmd,anakata 回答了它:)
标签: binary x86 twos-complement