posted by REDFORCE 2017. 9. 4. 15:54

이번 글에서는 Shift 연산을 이용한 방법에 대해서 적도록 하겠습니다.


보통 CPU에서 나눗셈 연산 ( ' / ' )을 사용하는 것은 속도가 엄청 느린 연산입니다.

(컴퓨터는 덧셈밖에 모르는 바보라서...)





따라서, 나눗셈 작업을 많이 호출 하는 경우 그 만큼 소모되는 시간적 자원이 가장 많다는 뜻이기도 합니다.


어쩔수 없는 경우는 나눗셈을 사용하는 것이 지당하지만, 가능한 경우라면 Shift 연산을 이용하는 방법도 있습니다.


예) 3451을 100으로 나눈 몫을 구할 때

몫 : 34

나머지 :51 


이라는 점을 누구나 쉽게 바로 암산할 수 있습니다.


여기서 100으로 나누는 경우 일/십의 자리수는 무시하고 앞의 두자리 3400을 간단히 100으로 나눠버린 값으로 몫이 나올 거라는 것을 추론할 수 있을 텐데요.


이진수에서도 마찬가지로 간단히 뒷자리는 무시하고 앞자리만 계산을 하면 되는데요.

예를 들어서 1101 1100 을 1000 으로 나눈 몫은

뒤 3자리를 무시하고 나온 11011 이 됩니다.


이 방법을 잘 살펴보면, 위와 같이 1000 으로 나누는 경우

원래 수에서 오른쪽으로 3칸 Shift를 해버리면 11011이 나온 다는 것을 알 수 있습니다.


아래 사진은 Shift 연산을 이용한 예제 입니다.