>  기사  >  Java  >  Java 정수가 132인데 바이트 결과가 -124로 변환되는 이유는 무엇입니까?

Java 정수가 132인데 바이트 결과가 -124로 변환되는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-17 10:29:03568검색

Why Does a Java Integer Cast to a Byte Result in -124 When It's 132?

유형 변환에서 Java의 이상한 동작: -124 미스터리 공개

Java에서 바이트에 정수를 할당하려고 할 때 흥미로운 현상이 발생합니다. 관찰이 발생합니다. 정수 값 132는 바이트로 캐스팅될 때 -124로 렌더링됩니다. 이 수수께끼 같은 결과는 처음에는 혼란스러워 보일 수 있습니다.

2의 보수 퍼즐 탐색

이 수수께끼를 풀려면 Java의 기본 데이터 유형과 그 표현을 자세히 살펴보는 것이 중요합니다. Java에서는 int 및 byte와 같은 정수 유형이 2의 보수 표기법을 사용하여 부호가 지정됩니다. 이 표기법을 사용하면 최상위 비트는 부호를 나타내며 숫자가 더 큰 비트 크기로 확장되어도 최상위 비트로서의 값을 유지합니다.

Seeking Unsigned Bliss

대부분의 시나리오에서는 바이트를 부호 없는 값으로 해석하고 모든 부호 정보를 삭제하는 것이 바람직합니다. 이는 비트 연산을 통해 달성할 수 있습니다. 예를 들어, 부호 있는 바이트에 마스크가 0xff인 비트 AND를 적용하면 부호 비트가 효과적으로 제거되어 부호 없는 값이 드러납니다.

The Unmasking Ritual Unraveled

The 프로세스는 다음과 같이 전개됩니다.

  1. 부호 있는 정수로서의 바이트: 바이너리에서 11111111로 표현되는 부호 있는 바이트를 생각해 보세요. Java는 이를 -1로 해석합니다.
  2. 마스크를 사용한 비트 AND: 0xff로 비트 AND 연산을 적용하면 부호 비트가 마스크되어 이진수로 00000001이 생성됩니다.
  3. 변환된 정수: Java는 마스크된 값을 부호 없는 정수(10진수 표현에서는 1)로 해석합니다.

이 기술을 사용하면 부호 있는 정수에서 부호 없는 바이트 값을 원활하게 추출할 수 있습니다.

결론

Java의 int에서 바이트로의 변환은 기본 2의 보수 표기법으로 인해 미묘하면서도 매혹적인 동작을 도입할 수 있습니다. 이러한 미묘한 차이를 이해하면 예상치 못한 -124 출력 뒤에 숨은 수수께끼를 풀어 개발자가 Java 애플리케이션에서 데이터 유형을 효과적으로 조작할 수 있습니다.

위 내용은 Java 정수가 132인데 바이트 결과가 -124로 변환되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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