java - 计算 Java Int 溢出

标签 java math expression integer-overflow

是否有计算 Java int 溢出的公式?

示例:如果我将 1 添加到 Integer.MAX_VALUE;,答案不是 2147483648,而是 -2147483648。

问题:如果我想计算对于大于 2^32 的值,Java 将打印什么,是否有简单的数学表达式(理论上的,而不是代码中的)?

最佳答案

((x + 231) 模 232) - 231

这是您要找的吗?这应该是在使用 32 位带符号 2 的补码整数的机器上任何数学运算的结果。也就是说,如果运算的数学值返回 x,则上述公式给出实际存储的整数(如果运算没有出错,并且不是“饱和”运算)。

请注意,我使用的是带有数学定义的“mod”,而不是 % 运算符在 Java 或 C 中的工作方式。也就是说,A mod B,其中 A 和 B 是整数, B > 0,总是返回 0 .. B-1 范围内的整数,例如(-1) mod 5 = 4。更具体地说,A mod B = A - B*floor(A/B)。

关于java - 计算 Java Int 溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481107/

相关文章:

java - 使用 Multi-Tenancy SAP Cloud Platform 应用程序时出错

algorithm - 2^x 的数值近似

java - 如何将 double 舍入到最接近的偶数

c# - 创建表达式以使用 out 参数调用方法

mysql - 基于其他列sql更新列的表达式

php - 如何在 PHP 正则表达式中获得全部匹配的 3 个条件?

java - 将时间戳转换为自 Unix 纪元以来的秒数

java - 使用 JNA 将 VB 代码转换为 Java,越来越接近

java - 如何以行和列的形式写入和读取txt文件中的数据?

c# - 将下面的代码重写为最优化的代码