시프트 연산 쓸때마다 오버플로우나면 어떻게되는지 까먹어서 적어봄


<<연산

피연산자 양수시

오버플로우시 버려짐
805306368 (001100...) << 2 = -1.0G
805306368 (001100...) << 3 = -2.1G
805306368 (001100...) << 4 = 0

피연산자가 32이상일 경우 32로 나눈 나머지로 간주
805306368 (001100...) << 31 = 0
805306368 (001100...) << 32 = 805306368

피연산자 음수시

기본적으로 0
오버플로우시 순환됨

6 (...00110) << -1 = 0
6 (...00110) << -2 = -2.1G
6 (...00110) << -3 = -1.0G

6 << -1 은 6 << 31과 같음
그러니까 피연산자가 음수면 32xN만큼 더해서 양수로 만들고 계산한다고 보면 됨

>>연산도 같음


기타 애매한 연산들 결과 보면
N / 0 = 0
N % 0 = 0
N % -M = N % M
1 ^ -1 = 1
N ^ -M = 0 (N > 1)
^ 연산시 초과 비트는 날라감