비트를 움직일 때, << 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 

수학적으로,

내가 사용하는 방법


int32_t someFunction(int32_t num)
{
	...
	
	num >> 1 ; // instead of num / 2;

}