public static void main (String[] ses) {
System.out.println(740 * (24 * 60 * 60 * 1000));
}
Run Code Online (Sandbox Code Playgroud)
在谷歌尝试过它,它在科学计算器上给出了不同的结果.
因为结果是63,936,000,000,这比你可以存储在Java整数中更多(默认情况下这是因为它们都没有以L开头).整数只能存储4个字节(32位),该数字需要36位.然后溢出,基本上只使用结果的最后(第一个?)32位.因为这些位的第一个(最后一个?取决于你如何看待它)确定数字是否有符号,当数字实际上被视为整数时,它显示为负数.
这对于计算哈希特别有用,因为我看到的唯一逻辑替代方法是使所有超过最大值的数字等于最大值,我认为我们认为这是一个糟糕的选择.
如果你做了System.out.println(740L * (24 * 60 * 60 * 1000));它应该使用长,可以存储更大的数字.
你会注意到我有问号 - 字节是字节,比特是比特.真正重要的是你如何解释它们.在软件开发社区中存在着争论第一个数字,位或字节的真正含义.将"1234"视为数字.1是第一位数?大多数普通人都会同意,因为它是在我们看到它时首先写的.但是其他人会认为4是第一个数字,因为为计算目的这样做很方便.(考虑添加 - 你先在哪里添加?这不是第一个数字吗?)
所以这就是为什么我看起来犹豫不决,正如我先说/最后一样 - 我只是想清楚说明发生了什么.