在Java中乘以大整数后达到零

巴勃罗

我有以下方法:

int x= (int) Math.pow(2, 5);
for (int k=1; k <= 3; k++) {
    x *= (2*x);
}
System.out.println(x); // prints 0

它只是将 x 初始化为 32,然后在循环的每次迭代中将其乘以其两倍。但是,我希望输出是一个大数字或至少是一个错误,但最终输出是 0。不,我尝试通过添加以下内容来进行一些调试:

int x= (int) Math.pow(2, 5);
for (int k=1; k <= 3; k++) {
    System.out.println(x + " * " + 2 * x);
    x *= (2*x);
}
System.out.println(x);

但输出是这样的:

32 * 64
2048 * 4096
8388608 * 16777216
0

有谁知道为什么数字突然变成0?

峰顶

二进制中的 32 是1000002 的幂。您的“更新过程”x = 2 * x * x;保持此属性 -x始终是 2 的(更大的)幂。在最后一次迭代中,您看到x溢出,因为int数据类型仅存储 32 位,并且的二进制表示x超过 32 位。打印的值正是0因为 的最低 32 位x都是0(因为x是 2 的非常大的幂),而int320的 是0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在.NET中乘以非常大的整数

来自分类Dev

在.NET中乘以非常大的整数

来自分类Dev

在SWI-PROLOG中乘以Peano整数

来自分类Dev

在Python中乘以分数和整数

来自分类Dev

算术异常:/零仅适用于Java中的整数

来自分类Dev

算术异常:/零仅适用于Java中的整数

来自分类Dev

如何获得一个浮点无穷大,当乘以零时得到零

来自分类Dev

Python-在特定字词后查找并乘以整数

来自分类Dev

左填充零的整数(Java)

来自分类Dev

Forth中的大整数?

来自分类Dev

Forth中的大整数?

来自分类Dev

Java:在BigDecimal中删除小数点后的零

来自分类Dev

矩阵乘以标量零

来自分类Dev

在Java中达到特定字符后,将值存储在单独的映射中

来自分类Dev

当数字0.0乘以负数字/整数时,BigQuery产生负(!)零

来自分类Dev

Java的:为什么乘以大的正数的原因负的成绩?

来自分类Dev

java-如何在Java中获取以前导零开头的整数的位数?

来自分类Dev

在 Python 中准确地乘以非常大的数字

来自分类Dev

在VHDL中乘以浮点数和整数文字

来自分类Dev

如何在C中乘以32位整数

来自分类Dev

表达式中的整数溢出,当乘以 13 位时

来自分类Dev

在python中处理大整数

来自分类Dev

SML中的大整数集

来自分类Dev

在R中处理大整数

来自分类Dev

在python中处理大整数

来自分类Dev

乘以大Theta?

来自分类Dev

正整数乘以负值

来自分类Dev

整数乘以错误的数字

来自分类Dev

为什么Java中的整数为-1零填充右移1 = 2147483647?