차근차근 꾸준히

한 눈에 알기 쉽게 정리하자

프로그래밍/백준(C++)

[C++] '<<' , '>>' 비트 시프트 연산(bit shift)

shintesh 2024. 12. 26. 15:04

백준 문제를 풀다보니 시프트 연산에 대한 이해가 덜 되서, 정말 가볍게 정리하려고 한다.

 

시프트 연산과 곱셈 나눗셈의 연관

'0b0101' 란 수가 있다. 이는 \(2^2 + 2^0\) 이다. 이에 시프트 연산을 하려고한다.

 

'<< 1' 연산을 하면,

'0b1010'이 된다. 이는 \(2^3 + 2^1\) 로, \(2^1 * (2^2 + 2^0)\) 이다.

 

따라서 2를 곱하는 것이 되는 것이고, 이에 반대인 '>> n' 연산은 \(2^n\)로 나누는 연산이 되는 것이다.
나누는 것은 '/' 연산과 같다. (소수점이 나오지 않는다.)