在两个补语中截断?

gir*_*una -1 c binary integer truncation twos-complement

我很难理解从unsigned转换为Two的Complement时截断是如何工作的.有人可以解释一下吗?(我的textook使用将4位值截断为3位值的示例,并说-1变为-1,但-5变为3).

Pas*_*uoq 6

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

1 1 1 1
Run Code Online (Sandbox Code Playgroud)

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

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

  1 1 1
Run Code Online (Sandbox Code Playgroud)

结果仍然具有其所有位集,因此它仍然表示-1 - 这次,3位2的补码版本为-1.

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

1 0 1 1
Run Code Online (Sandbox Code Playgroud)

砍掉最高位:

  0 1 1
Run Code Online (Sandbox Code Playgroud)

我们留下3位表示3.我们不能再得到-5的原因是-5的幅度太大而不适合3位格式.

当高阶位被截断时,具有较小幅度的数字(可以用3位表示)不变.数字从-4到3就是这种情况.

(*)注意,通常"截断"意味着保留最高有效位并去除最低有效位,特别是在浮点的情况下,当通过"截断"转换为整数时,权重小于1的位被擦除.在OP的书中选择单词是非常值得怀疑的,除非该书不是英文的,并且在翻译时单词不能完全映射到英语.