ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 비트마스킹(BitMasking) 정리
    알고리즘/개념 정리 2020. 12. 27. 14:56
    반응형

    비트마스킹(BitMasking) 정리

    목차

    • 비트마스킹이란?
    • 비트 켜고 끄기
    • 활용 방법

     

    비트마스킹이란?

    비트 마스킹이란, 어떤 정수 값을 비트를 이용해 이진수로 표현하는 방법을 말합니다. 

    예시를 하나 들어보겠습니다. 

    책상 5개가 일렬로 있는데 ( . . . . . ) 여기에 사람을 앉히는 경우는 (OXXXXX, OOXXX) 등등 2^5 가지가 있겠죠

    이 상태를 모두 표현하여 가지고 있고 싶은데 이 때 활용할 수 있는 방법이 비트마스킹입니다. 

    ex) OOOXX > 이 경우에는 11100(2) == 28

         OXXXXO > 이 경우에는 10001(2) == 17 등등

    이런식으로 상태를 저장하여 활용하는 방식입니다. 

     

    비트마스킹의 이점은 더 적은 메모리로 많은 상태를 표현할 수 있다는 것입니다. 

     


    비트 켜고 끄기

     

    비트를 켜고 끈다는 것이 어떤 의미냐면, 

    n번째 비트를 1로 만들어서 상태 값을 켜주는 것입니다. 

    위의 예시를 그대로 가져와 보겠습니다. 학생이 OXXXO 이렇게 앉아있을 때, 3번째 자리에 한명이 더 앉는다면 우리는 이를 어떻게 표현할 수 있을 까요 

    이 때 3번째 비트를 켜주어 표현하면 됩니다. OXXXO (10001) 에서 3번째 비트를 켜서 OXOXO(10101) 이렇게 표현하는 것입니다. 

     

    반대로 비트를 끄면 해당 자리에 학생을 떠나게 하는, 상태를 해제시키는 의미이겠죠

     

    • 비트 켜기
      bit = bit | (1<<n) //n번째 비트를 켜준다.
    • 비트 끄기
      bit = bit & ~(1<<n) //n번째 비트를 꺼준다.
    • 비트 토글
      bit = bit ^ *(1<<n) //켜진 비트는 끄고 꺼진 비트는 켠다.
    활용 방법

     

    i번째 비트가 켜져있는지 확인하고 싶다면?

     

    if( bit & ( 1<< i)) // bit is on , do something

    else // bit is 0 , do something

    반응형

    댓글

Designed by Tistory.