알고리즘

[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