> Java > java지도 시간 > 본문

`value`가 바이트일 때 `value & 0xff`가 Java에서 부호 없는 정수를 반환하는 이유는 무엇입니까?

DDD
풀어 주다: 2024-11-03 05:33:03
원래의
378명이 탐색했습니다.

Why does `value & 0xff` return an unsigned integer in Java when `value` is a byte?

Java에서 값 & 0xff의 미스터리 공개

Java에서 & 연산자는 두 정수에 대해 비트 AND 연산을 수행하여 결과적으로 새로운 정수. 그러나 피연산자 중 하나가 바이트 유형인 경우 흥미로운 현상이 발생합니다.

다음 코드를 고려하세요.

<code class="java">byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned)
int result = value & 0xff;</code>
로그인 후 복사

결과를 인쇄할 때 예상치 못한 254(부호 없음)가 표시됩니다. 이 동작을 이해하려면 Java 유형 시스템의 미묘한 차이를 조사해야 합니다.

Java에서 바이트는 부호 있는 유형이므로 양수 값과 음수 값을 모두 나타낼 수 있습니다. 그러나 정수로 승격되면 부호 없는 값으로 처리됩니다. & 연산자가 값(정수로 승격됨)과 상수 0xff(부호 없는 정수 리터럴)에 적용되면 결과는 승격된 값의 가장 낮은 8비트를 포함하는 부호 없는 정수가 됩니다.

기타 단어, 결과는 값과 동일한 이진 표현을 가지며 8번째 비트 위의 모든 비트는 0으로 지워집니다. 이는 결과를 값에서 부호 비트를 삭제하여 얻은 부호 없는 값으로 효과적으로 설정합니다.

따라서 value & 0xff는 원래 8비트 값을 유지하면서 부호 있는 바이트를 부호 없는 정수로 변환하는 기술을 제공합니다. 이는 부호 비트가 관련이 없거나 바람직하지 않은 데이터로 작업할 때 종종 유용합니다.

위 내용은 `value`가 바이트일 때 `value & 0xff`가 Java에서 부호 없는 정수를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿