public class MaxValue{
public static void main(String[] args){
int i = Integer.MAX_VALUE;
for(int j = 1; j<=10;j++){
System.out.println(i*j);
}
}
}
2147483647
-2
2147483645
现在我很惊讶。我不知道如何解释这个输出。我知道我可以使用long代替处理超过整数最大限制的值。然而,我只想知道java是如何计算这个的?
我们需要分析结果的二进制内容:
INTEGER.MAX_VALUE*1=0x7FFFFFFFF,它是小数2147483647
INTEGER.MAX_VALUE*2=0xFFFFFFFE,为-2
问题内容: 我只是在玩Java。编写了这个小程序: 输出如下: 2147483647 -2 2147483645 -4 2147483643 -6 2147483641 -8 2147483639 -10 现在我很惊讶。我不知道如何解释这个输出。我知道我可以使用long代替大于整数的最大限制来处理值。但是我只想知道java如何计算这个? 问题答案: 我们需要分析结果的二进制内容: Integer.
问题内容: 在Java中,有什么方法可以得到2 的乘法的高半部分吗?即由于溢出而消失的部分。(因此128位结果的高64位) 我习惯于在命令执行以下操作的地方编写OpenCL代码:http : //www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/mul_hi.html 由于OpenCL可以在我的CPU上有效地执行此操作,因此Java应该也可以执行
问题内容: java中双值的乘法运算符的保证精度是多少? 例如,2.2 * 100是220.00000000000003,但是220是双精度数。220.00000000000003是220之后的下一个两倍。 问题答案: 乘法工作正常,但不能精确表示为双精度。最接近的双打是: 2.199999999999999733(0x4001999999999999) 2.200000000000000177(
问题内容: 昨天我问一个问题关于并行矩阵乘法Java 7中使用fork /join框架这里。在axtavt的帮助下,我的示例程序开始工作。现在,我仅使用Java 6功能来实现等效程序。我遇到了与昨天相同的问题,尽管应用了axtavt给我的反馈(我认为)。我在俯视什么吗?码: 问题答案: 阅读了这个问题后,我决定改编我的程序。我的新程序无需同步即可运行良好。谢谢您的想法,彼得。 新代码:
问题内容: 我有做乘法和加法的方法,但是我只是无法理解它们。它们都是来自外部网站,而不是我自己的: 我尝试进行逐步调试,但是对我来说确实没有多大意义,尽管它可以工作。 我可能正在寻找的是尝试并了解其工作原理(也许是数学基础?)。 编辑:这不是家庭作业,我只是想学习Java中的按位运算。 问题答案: 让我们开始看乘法代码。这个想法实际上很聪明。假设您有以二进制形式编写的n 1和n 2。然后,您可以将
问题内容: 为什么以下计算会产生负值? 问题答案: 正在评估其中的每个表达式(当然是在编译时;它是一个常量),而不是。结果在某个时候溢出。因此,只需使所有操作数文字变长即可: 当然,仅使 一些 操作数变长就可以逃脱,但是我倾向于发现仅更改所有内容会更容易。 综上所述,如果您要查找“ 30天的毫秒数”,最好使用: