为什么“-1”在签名int中是11111111而不是10000001

时间:2015-07-18 05:26:19

标签: c++ c

我怀疑为什么我们在$this->load->model('modelNameA','aliasName'); $this->load->model('modelNameB','aliasName'); 中使用-1作为11111111,而不是10000001.因为我们学习第一位用于指定符号,而七位的其余部分用于值。因此,设计师决定使用-1作为

[signed int = 1,first bit = 127]但不是[Value by seven bits = 1,first bit = 1]

1 个答案:

答案 0 :(得分:1)

C和C ++允许符号和大小(-1表示10000001)和2的补码形式(-1表示11111111)。

此外,两种语言都允许使用一种补语形式(-1与11111110一样)。

然而,在大多数现存平台上都使用了二进制补码形式。一个主要优点(你问的“为什么”)是这些值与无符号算术的环绕相同,这是你在C和C ++中用unsigned得到的。换句话说,如果将相同的位解释为无符号值,则它与负值的区别恰好为2 n ,其中 n 是值表示位的数量。