더북(TheBook)

숫자 변환 [프로그램 1.3.7](binary.py)은 명령 줄 인수로 입력받은 십진수를 이진수(밑수 2)로 출력한다. 이것은 숫자를 2의 거듭제곱수의 합으로 분해하는 방법에 기반한다. 예를 들어 십진수 19는 이진수 10011로 표현되는데, 19 = 16 + 2 + 1이라고 말하는 것과 같다. 숫자 n을 이진수로 표현하려면 n보다 작거나 같은 2의 거듭제곱수에서 시작해 낮은 자리로 내려가면서 어느 자리에 값이 들어갈지(이진법으로 1이 들어가는 자리에 해당) 결정한다. 이 과정은 무게가 2의 거듭제곱인 추들을 이용해 물체의 무게를 재는 과정과 똑같다(그림 1.3.10). 먼저 물체보다 무겁지 않은 추 중에 가장 무거운 추를 찾는다. 그러고 나서 한 단계씩 가벼운 추를 올려놓으면서 물체가 더 가벼운지 검사한다. 물체가 더 가벼우면 추를 내려놓고, 그렇지 않으면 추를 그대로 둔다. 그러고 나서 다시 한 단계 아래로 내려가 이 과정을 반복한다. 각각의 추는 물체 무게를 이진법으로 표현할 때의 각 자리를 나타내며, 추를 올려놓는 것은 1, 내려놓는 것은 0에 해당한다.

▲ 그림 1.3.10 저울질에 비유한 이진수 변환

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.