Java에서 값 및 0xff를 사용한 비트별 조작
이 Java 코드 조각에서:
<code class="java">byte value = 0xfe; // corresponds to -2 (signed) and 254 (unsigned) int result = value & 0xff;</code>
질문이 제기됩니다. : value와 0xff 사이의 비트 AND 연산(&)이 예상대로 -2(부호 있음) 대신 254(부호 없음) 결과를 생성하는 이유는 무엇입니까?
C와 달리 byte는 Java에서 부호 있는 유형입니다. 비트별 조작 없이 int에 값을 할당하면 부호 있는 값 -2가 됩니다. 그러나 0xff와 함께 &를 사용하면 의도한 부호 없는 값을 얻을 수 있습니다.
여기서 핵심은 &가 int 값에서 작동한다는 것입니다. 값(바이트)이 &와 함께 사용되면 먼저 int로 승격됩니다. 마찬가지로 0xff는 int 리터럴입니다. 그러면 & 연산은 결과의 최하위 8비트에 배치된 값에서 8비트 이진 값을 생성합니다.
이 예에서는
이 비트 단위 조작이 일반적으로 사용됩니다. 특히 낮은 수준의 프로그래밍이나 데이터 조작 시나리오에서 특정 비트를 추출하거나 값의 부호 없는 특성을 유지하는 데 사용됩니다.
위 내용은 `value`가 부호 있는 바이트임에도 불구하고 `value & 0xff`가 Java에서 부호 없는 값을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!