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 연산을 이용한 예제 입니다.
'Programming > C++' 카테고리의 다른 글
[C++]최대공약수, 최소공배수 구하기 (0) | 2017.10.09 |
---|---|
[C++]바이트에서 1인 비트의 개수 세기 (0) | 2017.09.15 |
[C++]상점/인벤토리 만들기(콘솔) (0) | 2017.06.14 |
[C++]High/low/Seven (0) | 2017.06.14 |
[C++]간단한 배팅 도박게임 (0) | 2017.06.14 |