很抱歉,如果这是一个非常基本的问题,但为什么正面有一个减号?
是否与存储的零或其他东西有关?我认为计算二进制最高可能的十进制数只是为了增加2的幂,就像3位无符号那样它将是
1*2^0 + 1*2^1 + 1*2^2 = 7
同一规则是否应该适用于java整数?感谢
答案 0 :(得分:14)
因为Java支持max signed int为0x7fffffff
,即2 ^ 31-1。
2^31 = 0x80000000 is negative so Positive is 2^31-1
二元级别的比较将是:
10000000000000000000000000000000 --> 2147483648 --> 2^31
01111111111111111111111111111111 --> 2147483647 --> 2^31 -1
^ Sign bit
答案 1 :(得分:6)
同样的规则适用... 7
是2^3 - 1
。是的,这是因为0. :)
相反,否定的内容是-(2^31)
因此有2^31
个负数,一个0
和2^31-1
严格肯定,这会增加......
2^31 + 1 + 2^31 - 1 = 2 * 2^31 = 2^32
答案 2 :(得分:5)
这是因为二重补充(避免存储两个零)的便利性,而Java使用该表示存储数字。看看here。
答案 3 :(得分:3)
有2^31
个非负数,范围从0
到2^31-1
。所以,是的,zero
也存储为整数。此外,还有2^31
个负数,范围从-2^31
到-1
。
答案 4 :(得分:2)
必须拆分2 ^ 32
1/2是否定的。
0表示正数。
在数学中,0既不是消极也不是正面
它在.NET和MSSQL中是一致的。
如果您注意到不包含底片的组称为无符号 它包含0并且不适合将其称为正数 由于二进制世界从0开始,它被视为正面 杰克(+1)的答案有其原因。
答案 5 :(得分:1)
如果你有n位,你有2 ^(n-1)个负数(顶部位是1)和2 ^(n-1)个非负数。由于零是非负数,因此最多有2 ^(n-1)-1个正数,这也是最大值。
注意:最负面的数字没有正面因此
-Integer.MIN_VALUE == Integer.MIN_VALUE
答案 6 :(得分:0)
Java整数是带符号的数量,因此为符号保留一位,为该值留下31位。