【发布时间】:2013-06-25 20:34:37
【问题描述】:
Herbert Schildt 的《C The Complete Reference》一书说:“(在有符号负整数的情况下,右移将导致带入 1,从而保留符号位。)”
保留符号位有什么意义?
此外,我认为这本书指的是使用符号位而不是使用two's complement 表示负数的情况。但即使在那种情况下,推理似乎也没有任何意义。
【问题讨论】:
-
"保留符号位的意义何在?" -- 因为 -2/2 是 -1。 “我认为这本书指的是使用符号位而不是使用 2s 补码表示负数的情况。” ——不。“即使在那种情况下,推理似乎也没有任何意义。” -- 不,你缺乏理解力。
-
@Lundin:如果该答案已过时,那么可以说您应该在此处发布更好的答案(或更新已接受的答案)。无论哪种方式,它都不会阻止这个 Q 是重复的......
-
@JonathanLeffler C 标准允许除二进制补码之外的其他形式的符号。在不使用二进制补码的 CPU 上,我并不清楚算术移位在实践中的含义。为什么它不能使用旋转? C 标准中没有任何内容禁止它。
标签: c bit-manipulation bit-shift