java - 为什么这个程序的输出是-1?

标签 java

我正在准备 AP 计算机科学的期末考试,我遇到了这个问题:

int sum = 0, p = 1;
for (int count = 1; count <= 50; count++)
{
    sum += p;
    p *= 2;
}

输出为-1;但是我不明白为什么会这样。如果有人可以向我解释,那就太棒了。

最佳答案

通过添加 1,2,4,8,...,您基本上用 1 填充 sum 的二进制表示。

因为 111..1-1 的表示,所以您实际上生成了这个数字。

这通常被视为 Integer Overflow .

关于java - 为什么这个程序的输出是-1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29925703/

相关文章:

java - 如何在weblogic中实现单例

java - 如何在包含表格查看器的另一个组合的顶部显示组合?

java - 如何修复 Junit 和 Mockito 中的 'Argument(s) are different! Wanted' 错误

java - 无法解析 : Intent when instrumentation-testing android activities 的 Activity

java - 在纯 MVP 中,谁负责导航?

java - 如何在 Eclipse 中更改默认文本编辑器注释首选项?

java - 如何在 RecyclerView 的一项中找到两个文本 block ?

java - 为什么 Java 的 .addShutdownHook 在 BeagleBone Black 上不能用于 Ctrl-C?有解决方法吗?

java - 提交后是否禁止 begin() 同一事务(事务重用)?

java - ViewModel 没有零参数构造函数错误 - 即使它具有零参数构造函数