ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algorithm] Bit 연산
    알고리즘 2024. 1. 27. 12:55

    알고리즘 문제에서 Bit연산 사용법

     

    1. bit 연산의 종류 (총 6 가지)

    and: &

    or: |

    not: ~

    xor: ^

    Lshift: <<

    Rshift: >> 

     

     

    2. 숫자 A의 i 번 비트를 반전

    A ^= (1 << i)

    //Ex) 5 ^= (1 << 2) 의 경우
    5: 101
    1 << 2 = 2 : 10
    
    101 & 10 = 111

     

     

    3. 숫자 A의 i번 비트를 1로 설정

    A |= (1 << i)

    //Ex) 5 |= (1 << 2) 의 경우
    5: 101
    1 << 2 = 2 : 10
    
    101 | 10 = 111

     

     

    4. 숫자 A의 i번 비트가 1 인지 확인

    A &= (1 << i)

    (A >> i) & 1

    //Ex) (7 >> 2) & 1 의 경우
    7: 111
    7 >> 2 : 11
    
    111 & 11 == 111 
    즉 111 이므로 True

     

     

    5. K - 1 길이를 1 로 구성된 숫자 (체크숫자) 생성

    (1 << K) - 1;

    //Ex) 길이가 K=4 인 (1111) 만들기
    ( 1 << 4 ) - 1
    16 - 1 = 15
    1111

     

     

    6. 특정 input이 특정 값과 일치하는지

    int checkBit = (1 << 4) - 1;
    if((checkBit & inputNum) == checkBit)
    {
    	cout << "Pass" << "\n";
    }
    
    //특정 비트의 뒷 4 자리가 1 인 경우를 찾기
    inputNum = 47 일 때
    
    	42 : 0010 1111
      checkBit : 0000 1111
        answer : 0000 1111
     
     >> true

    '알고리즘' 카테고리의 다른 글

    [Algorithm] 다익스트라  (0) 2024.02.02
    [Algorithm] priority_queue  (0) 2024.02.01
    [Algorithm] Flood Fill (+BFS)  (1) 2024.01.31
    [일일 1 코테] 대충 한달쯤? 회고.  (0) 2023.12.12
Designed by Tistory.