비트를 움직일 때, << operator를 사용해서 움직일 비트의 단위를 설정한다.
<< 2를 썼다면, 2칸 왼쪽으로 움직이는 것이다.
1111 1110 << 2
1111 1000
비트를 움직이고 난 후에 빈곳은 0으로 채운다.
0001 1111 >> 3
0000 0011
오른쪽으로 움직일 때도 마찬가지이다.
하지만 제일 앞 숫자가 1일때 오른쪽으로 쉬프트할 경우, 왼쪽 빈칸은 1로 채워진다. 이러한 이유는, 제일 앞 비트가 1인 경우에는 음수를 뜻하기 때문이다.
1100 1100 >> 2
1111 0011
첫 숫자가 1인데 오른쪽 쉬프트를 하면서 제일 첫 숫자가 0이 되게 하려면, triple-sign operator (>>>)를 사용하면 된다. Java, Scala, C++, C 등에서 사용 가능하다.
1100 1100 >>> 1
0110 0110
수학적으로,
→ 오른쪽 쉬프트는 int a /= 2
2 → 두번 오른쪽 쉬프트는 int a/= 4
int32_t someFunction(int32_t num)
{
...
num >> 1 ; // instead of num / 2;
}