expression1>>expression2 비트연산 공통 설명

>> 연산자는 expression1의 비트상에서 expression2에 지정한 비트 수만큼 오른쪽으로 이동시킨다.
expression1의 비트에서 왼쪽에 새로 추가되는 자리는 0으로 채운다(보이지는 않믐).
오른쪽으로 밀려난 자릿수의 숫자는 버린다.

양수에서는 간단하다.
예를 들어 아래 코드에서는 14(이진수 '1110')를 비트상에서 오른쪽으로 두 비트 옮기면
오른쪽 2비트는 잘려 없어지고 이진수로 '11', 이는 십진수 3으로 반환된다.

var mumb=14
mumb>>2

그러나 음수에서는 이해가 쉽지 않다.
예를 들어 아래 코드에서는 -14의 이진수 '-1110')를 비트상에서 오른쪽으로 두 비트 옮기면
이진수로 '-100', 이는 십진수 -4으로 반환된다.
이는 부호를 유지하며 단순히 비트 자리수만 이동하는 것('-11' 십진수(-3))이 아니다.

var mumb=-14
mumb>>2

이는 32비트 기준(232)의 비트연산에서 부호를 관리하기 위한 것이기도 하다.

numb32비트맵(232 기준)에서 같은 수치연산식결과
십진수2진수십진수2진수십진수2진수
-14-1110429496728211111111111111111111111111110010numb>>2-4-100
-4-100429496729211111111111111111111111111111100이동을 위와 비교하라
-3-11429496729311111111111111111111111111111101이 단순 비트 이동이 아니다.
-78-1001110429496721811111111111111111111111110110010numb>>3-10-1010
-10-1010429496728611111111111111111111111111110110이동을 위와 비교하라
-9-1001429496728711111111111111111111111111110111이 단순 비트 이동이 아니다.

32비트맵(232 기준)에서 비트자리가 오른쪽으로 이동 비트 칸씩 이동하고 빈 왼쪽칸에는 각각 '1'이 추가되었다.