【发布时间】:2016-11-07 22:17:53
【问题描述】:
我的教科书对有符号整数的补码方法给出如下解释:
我们将讨论这个方法,因为它适用于一个 1 字节的值。在那里面 上下文中,值 0 到 127 由最后 7 位表示, 高位设置为 0。到目前为止,这与 符号幅度法。此外,如果高位为 1,则值为 消极的。不同之处在于确定它的价值 负数。减去位模式 对于 9 位模式中的负数 100000000(256 为 以二进制表示),和 结果就是值的大小。
这对我来说毫无意义。典型的处理器使用八位字节(8 位字节)。 9位字节减去8位字节是什么意思?
【问题讨论】:
-
还有更多信息here
-
这与 C 无关。两个补码方法的想法是能够根据第一位写入有符号数。例如,如果您的字节为 11111111,则表示它是负数,相反,如果它是 01111111,则表示它是正数。在上面由@user3386109 提供的链接上阅读更多信息
-
“减法”是指数学中这个词的正常定义……不知道你对什么感到困惑。例如。 256 - 251 = 5,所以二进制补码中的 -5 与 +251 表示相同
-
这只是普通的算术。从 9 位值中减去 8 位值的结果将再次适合 8 位。
-
是的,了解binary numbers 和binary arithmetic 是第一步。
标签: c twos-complement