비트 연산 이해: 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!