我很难理解从unsigned转换为Two的Complement时截断是如何工作的。有人可以解释一下吗? (我的textook使用将4位值截断为3位值的示例,并说-1变为-1,但-5变为3)。
答案 0 :(得分:5)
-1是:
1 1 1 1
( - 1总是表示为2的补码中的所有位1。)
在你的教科书中,“截断”只是用来表示(*)“切断最高位”:
1 1 1
结果仍然包含所有位集,因此它仍然代表-1 - 这次是3位2的补码版本-1。
-5在4位的2的补码中表示为:
1 0 1 1
砍掉最高位:
0 1 1
我们留下3位表示3.我们不能再得到-5的原因是-5的幅度太大而不适合3位格式。
当高阶位被截断时,具有较小幅度的数字(可以用3位表示)不变。数字从-4到3就是这种情况。
(*)请注意,通常“截断”意味着保留最高有效位并删除最低有效位,尤其是在浮点时,其中权重小于1的位在转换为整数时被擦除通过“截断”。在OP的书中选择单词是非常值得怀疑的,除非该书不是英文的,并且在翻译时单词不能完全映射到英语。