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