> Java > java지도 시간 > 코드 조각 \'byte value = 0xfe; int result = value & 0xff;\'의 결과가 254인 이유는 무엇입니까?

코드 조각 \'byte value = 0xfe; int result = value & 0xff;\'의 결과가 254인 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-03 12:30:28
원래의
905명이 탐색했습니다.

Why does the code snippet

비트 연산 이해: Java에서 값 & 0xff 풀기

&를 사용하여 비트 연산을 수행하는 Java 코드 조각에서 질문이 발생합니다. 연산자:

<code class="java">byte value = 0xfe;
int result = value & 0xff;</code>
로그인 후 복사

이 작업은 인쇄 시 값 254를 산출하는 것으로 보입니다. 그러나 이것이 어떻게 작동하는지 이해하려면 Java의 데이터 유형과 비트 연산의 복잡성을 더 깊이 파고들어야 합니다.

비트 연산 및 데이터 승격

Java의 & 연산자는 비트 단위 AND 연산. 결과의 각 비트는 피연산자의 해당 비트가 모두 1이면 1로 설정되고 그렇지 않으면 0으로 설정됩니다. 일반적으로 이 연산의 결과는 피연산자와 동일한 유형의 값입니다.

코드 조각에서 값은 8비트 부호 있는 정수인 바이트입니다. 0xfe 값은 부호 있는 표현에서는 -2, 부호 없는 표현에서는 254에 해당합니다. 다른 피연산자 0xff는 부호 없는 255를 나타내는 int 리터럴입니다.

그러나 & 연산자는 int 값에만 작동하도록 정의되어 있습니다. 따라서 작업이 수행되기 전에 값이 먼저 int(ff ff ff fe)로 승격됩니다.

결과 공개

그런 다음 & 작업이 승격된 값과 int 리터럴 0xff(00 00 00 ff)로 인해 00 00 00 fe 값이 생성됩니다. 이는 unsigned 표현의 254에 해당하며 결과로 출력됩니다.

요약하면 value & 0xff 표현식은 결과의 하위 8비트에 값의 8비트를 넣은 결과인 unsigned 값으로 결과를 설정합니다. . 이는 byte가 Java의 부호 있는 유형이고 byte에서 int로 직접 변환하면 잘못된 부호 표현이 발생하기 때문에 필요합니다.

위 내용은 코드 조각 \'byte value = 0xfe; int result = value & 0xff;\'의 결과가 254인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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