0

从无符号转换为二进制补码时,我很难理解截断是如何工作的。有人可以解释一下吗?(我的 textook 使用了将 4 位值截断为 3 位值的示例,并说 -1 变为 -1,但 -5 变为 3)。

4

1 回答 1

7

四个二进制位上表示的 -1 是:

1 1 1 1

(-1 总是表示为 2 的补码中的所有位 1)。

在您的教科书中,“截断”仅用于表示(*)“切断最高位”:

  1 1 1

结果仍然具有所有位集,因此它仍然表示 -1 — 这一次,是 -1 的 3 位 2 的补码版本。

-5 在 4 位上以 2 的补码表示为:

1 0 1 1

砍掉最高位:

  0 1 1

我们剩下的是 3 的 3 位表示。我们不能再得到 -5 的原因是 -5 的幅度太大而无法适应 3 位格式。

当高位被砍掉时,可以用 3 位表示的具有较小幅度的数字保持不变。从 -4 到 3 的数字就是这种情况。

(*) 请注意,通常“截断”意味着保留最高有效位并删除最低有效位,特别是在浮点上下文中,当通过“截断”转换为整数时,会擦除权重小于 1 的位。OP 书中的单词选择是非常值得怀疑的,除非这本书不是英文的,而且翻译时单词没有准确地映射到英语。

于 2013-05-05T10:11:21.230 回答