当前位置: 首页 > 知识库问答 >
问题:

为什么2*integer.max_value=-2?[副本]

邵兴文
2023-03-14

可能的重复:
Java如何处理整数下溢和上溢,您将如何检查它?
system.out.println(4*2147483647)在Java中如何等于-4?

我想知道这为什么成立:

2 * Integer.MAX_VALUE == -2

共有1个答案

万俟穆冉
2023-03-14

您得到这个结果是因为整数溢出:在表示负整数的二补系统中,取最大值011....112并将其乘以2得到11....1102,它对应于-2

 类似资料:
  • 我是一名高中生,目前正在为州学术会议(UIL)做准备。我有一个问题,我到处找,似乎找不到答案!为什么要打印0.0?

  • 问题内容: Python如何评估表达式? 我插了多少,这就是答案。请任何人可以解释这种行为 因为它是印刷,因为它是印刷 问题答案: 您的表情与: 可以在任何数字表达式之前使其为负,或不执行任何操作(存在对称性选项)。带有负号: 和 我看到您澄清了您的问题,说您来自C背景。在Python中,没有像C和C这样的增量运算符,这可能是造成混淆的原因。要递增或递减变量,或在Python中使用以下样式:

  • 问题内容: 为什么 初始空间 大于“ 10”的“ 2”? 我在latin1和utf8英语归类中都尝试过: 我知道它与类型有关,因为当它被强制转换时,它可以按预期工作: 这里到底发生了什么? 编辑: 以上所有操作都是在Fedora 13中使用8.4.8完成的。但是我只是在Centos 6中使用9.04进行了测试,结果相同: 数据库清单 新编辑: 这是为了进一步混淆: 问题答案: 我认为Postgre

  • 问题内容: 如果我尝试这样做: 我得到以下输出: 演示:http://codepad.org/ncVuJtJu 这是为什么? 我希望将其作为输出: 我的理解: 但是为什么不输出呢? 问题答案: 所有解释为什么得到2而不是1的答案实际上都是错误的。根据PHP文档,混合并以这种方式是不确定的行为,所以你可以得到1或2切换到不同版本的PHP可能会改变你得到的结果,这将是一样有效。 请参阅示例1,其中显示

  • 问题内容: 是真的。 我知道Java中的整数是32位,并且不能超过2 31 -1,但是我不明白为什么要在其结果中加1 而不是某种例外。更不用说像Ruby这样的透明转换为更大的类型了。 是否在某处指定了此行为?我可以依靠吗? 问题答案: 因为整数溢出。溢出时,下一个值为。相关JLS 如果整数加法溢出,则结果是数学和的低阶位,以某种足够大的二进制补码格式表示。如果发生溢出,则结果的符号与两个操作数值的

  • 问题内容: 根据Django 2.0发行说明, Django 2.0及更高版本将仅支持python 3,从而使1.11.X成为支持python 2的最后一个发行系列。 请参阅发行说明页面中的报价: Django 2.0支持Python 3.4、3.5和3.6。我们强烈建议并仅正式支持每个系列的最新版本。 Django 1.11.x系列是最后一个支持Python 2.7的系列。 但是,在运行时,将安