5

Java에서 가지고있는 비트 값 또는 byte 값을 수행하려고합니다. 예를 들어Java Bitwise 또는 Byte와 Int 사이

, 나는 실행하고이에 대한

byte b = (byte)0b11111111; 
int result = 0 | b; 

내 예상 된 결과가 0b00000000 00000000 00000000 11111111, 또는 255 될 것이다. 그러나 -1 또는 0b11111111 11111111 11111111 11111111을 받고 있습니다.

나는 자바 작업을 수행하기 전에 부호 확장을 통해 내 byteint로 변환 있으리라 믿고있어, 및 비트 마스크 (0b11111111)를 사용하지 않고 내 원하는 결과를 얻을 수있는 방법이 있다면 난 그냥 궁금 해서요.

+1

"비트 마스크를 사용하지 않고"대답은 비트 마스크를 사용하는 것입니다. Java를 중심으로하는 방법은 없습니다. –

답변

7

byteint으로 변환 할 때 부호 확장을 사용 중지하는 표준 해결책은 비트 마스크를 사용하는 것입니다. Java 추한 조각을 받아 들여야합니다.

int result = 0 | (b & 0xFF);