>Java >java지도 시간 >긴 값에 대해 곱셈 연산에 'L' 접미사를 추가하는 것이 중요한 이유는 무엇입니까?

긴 값에 대해 곱셈 연산에 'L' 접미사를 추가하는 것이 중요한 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-07 07:21:02784검색

Why Does Adding an

"L" 접미사가 있거나 없는 곱셈 연산의 결과가 다른 이유는 무엇입니까?

긴 값이 포함된 숫자를 곱할 때 "L"을 추가합니다. " 숫자 리터럴의 접미사는 정확한 결과를 얻는 데 중요합니다. 이는 숫자 리터럴의 기본 데이터 유형이 int이기 때문입니다. 이 유형은 long보다 범위가 작고 정수 오버플로가 발생할 수 있습니다.

접미사가 "L"인 Long 값

long oneYearWithL = 1000*60*60*24*365L;
  • 리터럴 1000*60*60*24*365L은 "L" 접미사를 사용하여 명시적으로 long으로 변환되므로 결과가 64비트 long 값으로 저장됩니다. 이 값은 1년의 초 수를 정확하게 나타냅니다.

"L" 접미사가 없는 긴 값

long oneYearWithoutL = 1000*60*60*24*365;
  • 숫자 리터럴 1000 *60*60*24*365 는 "L" 접미사가 없기 때문에 암시적으로 int로 캐스팅됩니다. 결과는 32비트 정수이며 값이 int 범위를 벗어났기 때문에 오버플로됩니다. 이 오버플로로 인해 잘못된 계산이 발생합니다.

이진 표현

두 값의 차이는 이진 표현에서 확인할 수 있습니다.

oneYearWithL  : 011101010111101100010010110000000000
oneYearWithoutL: 01111111111111111111111111111111

oneYearWithL의 최상위 비트에 있는 "1"은 양수 값을 나타내고, oneYearWithoutL의 최상위 비트에 있는 "0"은 음수 값을 초래하는 오버플로를 나타냅니다.

결론

긴 값이 포함된 숫자를 곱할 때 "L" 접미사를 명시적으로 사용하면 결과가 64비트 긴 값으로 정확하게 저장됩니다. "L" 접미사 추가를 무시하면 정수 오버플로로 인해 잘못된 계산이 발생할 수 있습니다.

위 내용은 긴 값에 대해 곱셈 연산에 'L' 접미사를 추가하는 것이 중요한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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