Algorithm/CodeUp - Python
기초 100제 - 1047 : [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기(설명)
Idealinsane
2019. 12. 10. 00:35
728x90

비트시프트연산자는 2진수에서 자리수 이동을 계산해준다.
십진수로 5인 '0101'에 '<<1' 연산을 하면 자리수를 왼쪽으로 한칸씩 이동해 십진수 10인 '1010'이 된다.
위 문제의 그림을 보면 이해하기 쉽다. '<<n'이면 n번 왼쪽으로 이동한다.
따라서 2배 곱한 정수를 출력하기 위해 '<<1'연산을 하면 된다.

테스트 케이스 결과:

오른쪽 비트시프트 '>>'는 연산자 좌측 값에 '*1/2' 연산을 우측 값만큼 한다고 생각할 수 있는데,
위 문제 그림에 마지막 a>>2 를 보면 뒤에 이진수 '10'이 밀려난 것을 볼 수 있다.
소수점으로 판단해 '0.5'로 생각할 수도 있는데 결과가 '2'인 것으로 보아 시프트 연산으로 밀려난 1 미만의 부분은 폐기되는 것으로 보인다.
반응형