>Java >java지도 시간 >Java 곱셈에서 하나의 피연산자에 'L'을 추가하면 결과가 변경되는 이유는 무엇입니까?

Java 곱셈에서 하나의 피연산자에 'L'을 추가하면 결과가 변경되는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-07 12:29:02825검색

Why does adding

"L"이 있는 경우와 없는 경우의 곱셈 결과가 다른 이유는 무엇입니까?

Java에서 "L"을 사용할 때 곱셈 연산은 다른 결과를 생성합니다. 피연산자 중 하나에 접미사를 붙입니다.

정확한 Long 값을 위해 "L"을 추가합니다

"L"을 추가하면 결과가 Long 값이 됩니다. 정수를 곱하면 결과도 정수가 됩니다. 결과가 정수 범위(2147483647~-2147483648)를 초과하면 오버플로되어 음수가 됩니다.

수식에서 365에 "L"을 추가하면 긴 값임을 명시적으로 지정합니다. 이렇게 하면 다른 정수와 곱한 결과가 긴 값이 되고 정수 범위에서 잘리지 않습니다.

"L" 제외: 잘못된 정수 결과

"L" 없이 정수를 곱하면 결과는 정수가 됩니다. 결과가 정수 범위를 초과하면 "둘러싸서" 다른 값이 됩니다.

예를 들어 곱셈 1000606024365에 "를 추가하지 않고 L"은 잘못된 결과 1471228928을 제공합니다. 이는 결과 31536000000이 정수 범위를 오버플로하여 -1702967296(31536000000의 2의 보수 표현)이 되기 때문입니다.

이진 표현

두 결과의 이진 표현은 차이를 보여줍니다.

  • 1000606024365L: 011101010111101100010010110000000000
  • 1000 606024365: 011111111111111111111111111111

"L"을 추가하지 않으면 최상위 4비트가 잘려 잘못된 표현이 됩니다. 0101011110110001 0010110000000000, 이는 잘못된 결과에 해당합니다.

기타 고려 사항

  • 곱셈 결과가 정수 범위 내의 값이 되는 경우 "L"을 추가하면 차이가 있습니다.
  • 중간 계산 중에 오버플로가 발생할 수 있습니다. 최종 결과가 정수 범위에 들어가더라도 큰 값으로 산술 연산을 수행할 때는 오버플로를 고려하는 것이 중요합니다.
  • "L"을 365L1000과 같은 수식 시작 부분으로 이동606024*30, 정수 범위를 넘을 수 있는 곱셈의 정확성을 보장합니다.

위 내용은 Java 곱셈에서 하나의 피연산자에 'L'을 추가하면 결과가 변경되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.