首页 >Java >java教程 >为什么在 Java 乘法中向一个操作数添加'L”会改变结果?

为什么在 Java 乘法中向一个操作数添加'L”会改变结果?

Linda Hamilton
Linda Hamilton原创
2024-11-07 12:29:02912浏览

Why does adding

为什么带和不带“L”的乘法结果不同?

在Java中,使用“L”时乘法运算会产生不同的结果操作数之一的后缀。

添加“L”以获得正确的长值

添加“L”可确保结果是长值。整数相乘时,结果也是整数。如果结果超出整数范围(2147483647 到 -2147483648),则会溢出并变为负数。

通过在表达式中将“L”添加到 365,您可以明确指定它是一个 long 值。这确保了它与其他整数相乘的结果是一个 long 值,并且不会被截断到整数范围。

没有“L”:不正确的整数结果

当不带“L”的整数相乘时,结果是一个整数。如果结果超出整数范围,它会“环绕”并成为不同的值。

例如,乘法 1000606024365 不添加 " L" 给出了错误的结果 1471228928。这是因为结果 31536000000 溢出了整数范围,变成了 -1702967296(31536000000 的 2 的补码表示)。

二进制表示

两个结果的二进制表示显示差异:

  • 1000606024365L:011101010111101100010010110000000000
  • 1000 606024365: 01111111111111111111111111111111

如果不添加“L”,则四个最高有效位将被截断,导致错误的表示 0101011110110001 0010110000000000,其中对应于错误的结果。

其他注意事项

  • 如果乘法结果在整数范围内,添加“L”不会产生差异。
  • 中间计算过程中可能会发生溢出。即使最终结果符合整数范围,在执行大值算术运算时,考虑溢出也很重要。
  • 将“L”移至表达式的开头,例如 365L1000606024*30,确保可能溢出整数范围的乘法的正确性。

以上是为什么在 Java 乘法中向一个操作数添加'L”会改变结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn