백준 문제를 풀다보니 시프트 연산에 대한 이해가 덜 되서, 정말 가볍게 정리하려고 한다.
시프트 연산과 곱셈 나눗셈의 연관
'0b0101' 란 수가 있다. 이는 \(2^2 + 2^0\) 이다. 이에 시프트 연산을 하려고한다.
'<< 1' 연산을 하면,
'0b1010'이 된다. 이는 \(2^3 + 2^1\) 로, \(2^1 * (2^2 + 2^0)\) 이다.
따라서 2를 곱하는 것이 되는 것이고, 이에 반대인 '>> n' 연산은 \(2^n\)로 나누는 연산이 되는 것이다.
나누는 것은 '/' 연산과 같다. (소수점이 나오지 않는다.)
'프로그래밍 > 백준(C++)' 카테고리의 다른 글
[알고리즘] 백트래킹(Backtracking) (1) | 2024.12.27 |
---|---|
[백준/C++] 10818번 - 최소, 최대 (정적할당, 동적할당) (0) | 2023.01.03 |