解释有符号数和无符号数

Interpreting signed and unsigned numbers

老师告诉我们一个二进制数,比如1000 0001,有两种含义。一个代表-127(有符号),即从-127到127 另一个是无符号数,从0到256

如果我有一个二进制数,例如 1000 0001 ,计算器只显示有符号数 (-127)。我怎么知道这个二进制数代表的无符号数是多少?

有符号数和无符号数具有完全相同的位

在您的计算器中,您可以显示为十六进制 (0xff)。是否要解释十六进制数字和 "signed" 或 "unsigned".

取决于您

在 x86 汇编程序中,您可以检查 CPU 状态标志中的 "sign bit"。

查看本教程:

Signed vs Unsigned Numbers

无符号数最容易从二进制解释;只需将这些位表示的所有值相加(2^7+2^0 在数字 1000 0001 =129 的情况下)。

符号解释几乎相同,只是首先多了一步: 如果前导数字是 1,则将所有位取反(在本例中为 0111 1110)并将 1 添加到结果中以获得负数的(绝对)值(在这种情况 0111 1111=127)

为了测试你做对了,再做同样的操作,你应该得到原来的数字。