Java长字节长度

时间:2018-06-04 11:21:08

标签: java

如果Java的 long 原始数据类型是64位有符号整数,那么为什么Java docs表明static long最大值是2 ^ 63-1?是否有更大的原因影响Java中的其他原始数据类型?

我正在学习Java,我对这种差异真正感到好奇。谢谢。

2 个答案:

答案 0 :(得分:2)

Java的long类型确实是64位整数,但它也是签名的

使用64位,您可以表示2 ^ 64个不同的数字。如果忽略所有负数,则最大值为2 ^ 64-1,最小值为0. 0加上所有2 ^ 64-1正数总共为2 ^ 64个数字。

但是,如果你考虑所有负数和正数,那么2 ^ 64个不同数字中的大约一半将是负数。 Java只选择代表2 ^ 63个负数,数字0和2 ^ 63-1个正数。如果你添加所有这些,你会得到2 ^ 64个总数。

2^63 + 1 + 2^63 - 1 = 2^64
       ^
       |
  this is the number zero

答案 1 :(得分:0)

它只是一个范围公式,就像八进制和十六进制数字2^n -1的范围一样 有符号和无符号数字不同。 2^n2^n-1(范围)