your programing

특정 비트를 바이트 단위로 설정

lovepro 2020. 10. 15. 08:18
반응형

특정 비트를 바이트 단위로 설정


Java 바이트 변수에 비트를 설정하려고합니다. 그것은 같은 적절한 방법을 제공합니다 .setBit(i). 아무도 내가 이것을 어떻게 깨달을 수 있는지 알고 있습니까?

주어진 바이트를 비트 단위로 반복 할 수 있습니다.

if( (my_byte & (1 << i)) == 0 ){

}

그러나이 위치를 1 또는 0으로 설정할 수 없습니다.


비트 OR ( |) 및 AND ( &) 연산자를 사용합니다. 즉에서 비트를 설정하는 비트를 설정하는 방법 pos1:

my_byte = my_byte | (1 << pos);   // longer version, or
my_byte |= 1 << bit;              // shorthand

에 비트를 설정 해제, 또는에 켜십시오 0:

my_byte = my_byte & ~(1 << pos);  // longer version, or
my_byte &= ~(1 << bit);           // shorthand

예제는 고급 Java / 비트 연산자를 참조하십시오.


조금 설정하려면 :

myByte |= 1 << bit;

지우려면 :

myByte &= ~(1 << bit);

Jon의 대답driis 의 대답 을 보완하기 위해

약간 전환 (반전)하려면

    myByte ^= 1 << bit;

필요한 기술은 선택한 비트를 분리하고 설정하거나 지우는 것입니다. 위에서 테스트하는 데 사용하고 있으므로 이미 비트를 분리하는 표현식이 있습니다. OR로 비트를 설정하거나 비트의 1의 보수로 비트 AND로 비트를 지울 수 있습니다.

boolean setBit;
my_byte = setBit
          ? myByte | (1 << i)
          : myByte & ~(1 << i);

작업을 수행하는 클래스 java.util.BitSet을 참조하십시오.

설정하려면 : myByte.set(bit);재설정하려면 : myByte.clear(bit);부울을 채우 려면 : 부울 myByte.set(bit, b);을 얻으려면 : b = myByte.get(bit);비트 맵 을 가져옵니다 .byte bitMap = myByte.toByteArray()[0];

참고 URL : https://stackoverflow.com/questions/4674006/set-specific-bit-in-byte

반응형