250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 오블완
    • 뉴스앱
    • 티스토리챌린지

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    개발/java

    [Java] byte 에서 특정자리 bit 추출하는 방법

    2024. 2. 2. 13:05
    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)

    비트를 추출하려면 다음과 같은 단계를 따릅니다:

    1. 대상 비트 선택: 추출하려는 비트의 위치를 결정합니다.
    2. 비트 이동 연산: >> 연산자를 사용하여 선택한 비트를 최하위 위치로 이동시킵니다.
    3. 비트 마스킹: & 연산자를 사용하여 최하위 비트 외의 다른 비트를 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
      '개발/java' 카테고리의 다른 글
      • [windows + intellij] OpenJDK21 설치 방법
      • [Enum] 여러 필드로 구성된 Enum에서 특정 값이 존재하는지 체크 하는 방법
      • Google Bard API 사용
      • org.apache.commons.lang3.ObjectUtils max 함수
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바