-
[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