728x90
반응형
Java에서 byte 데이터로부터 특정 비트를 추출하는 것은 비트 연산자를 사용하여 간단히 수행할 수 있습니다. 여기서는 기본적인 예제를 통해 byte 값에서 특정 비트를 얻는 방법을 설명하겠습니다.
Java에서 byte는 8비트로 구성되어 있으며, 각 비트를 0(비트가 꺼짐) 또는 1(비트가 켜짐)으로 표현할 수 있습니다. 비트 위치는 오른쪽에서 왼쪽으로 0부터 7까지 번호가 매겨집니다. 가장 오른쪽 비트가 최하위 비트(LSB, Least Significant Bit)이며, 가장 왼쪽 비트가 최상위 비트(MSB, Most Significant Bit)입니다.
7(MSB) | 6 | 5 | 4 | 3 | 2 | 1 | 0(LSB) |
비트를 추출하려면 다음과 같은 단계를 따릅니다:
- 대상 비트 선택: 추출하려는 비트의 위치를 결정합니다.
- 비트 이동 연산: >> 연산자를 사용하여 선택한 비트를 최하위 위치로 이동시킵니다.
- 비트 마스킹: & 연산자를 사용하여 최하위 비트 외의 다른 비트를 0으로 설정합니다. 이렇게 하면 원하는 비트만 남게 됩니다. 두 bit가 모두 1일 경우에만 1로 표현됩니다.
public class BitExtractionExample {
public static void main(String[] args) {
byte sampleByte = 0b01010101; // 85 in decimal, 01010101 in binary
int bitPosition = 2; // 추출하려는 비트 위치 (0부터 시작)
// 특정 비트 추출
int extractedBit = (sampleByte >> bitPosition) & 1;
System.out.println("Extracted bit at position " + bitPosition + ": " + extractedBit);
}
}
이 코드는 sampleByte 변수에서 2번째 위치(0부터 시작하므로 세 번째 비트)의 비트를 추출하여 출력합니다. 이 예제에서는 0b01010101 (2진수로 85)에서 2번째 비트를 추출합니다. 결과적으로, 이 비트는 1입니다.
sampleByte 각 bit 값
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
sampleByte >> bitPosition 각 bit 값(각 bit를 오른쪽으로 2칸 이동)
0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
1의 bit값
0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
(sampleByte >> bitPosition) & 1
1은 0번째 bit만 1이기 때문에 sampleByte의 2번째 bit가 0이면 0, 1이면 1이 됩니다.
728x90
반응형
'개발 > java' 카테고리의 다른 글
[windows + intellij] OpenJDK21 설치 방법 (0) | 2024.05.28 |
---|---|
[Enum] 여러 필드로 구성된 Enum에서 특정 값이 존재하는지 체크 하는 방법 (0) | 2024.02.21 |
Google Bard API 사용 (0) | 2023.12.02 |
org.apache.commons.lang3.ObjectUtils max 함수 (0) | 2023.10.06 |
Junit - MockServletContext 사용 (0) | 2023.09.06 |