우리가 가장 익숙하게 사용할 뿐 아니라 수를 배울 때 가장 먼저 배우는 것이 바로 십진법입니다. 십진법은 0~9 까지의 수를 사용하는데요. 위키백과에 따르면 십진법은 고대 이집트 문명으로부터 나왔고, 인간이 10개의 손가락을 가진 것과 밀접한 관련이 있는 것으로 추정된다고 합니다.
세계에서 가장 널리 쓰이고 있는 진법인 만큼 사실 엄밀하게 그 의미가 무엇인지 모르고 사용하는 경우도 많을 것 같습니다. 그렇다고 제가 안다는 말은 아니구요. 늘 그렇듯 공부하면서 알게 된 것을 나름대로 풀어서 적어보려고 합니다.
앞에서 십진법은 0~9 까지의 수를 사용한다고 했는데요. 그 말은 9
다음의 수를 표현하기 위해 자리가 하나 증가하게 된다는 의미입니다. 우리가 의식하지 않아도 9
다음에 십의 자리에 1
, 일의 자리에 다시 0
을 넣어 10
이라는 숫자가 온다는 것을 알고 또 사용하는 것이 사실은 십진법을 다루고 있는 것이죠.
말하지 않아도 모두가 경험적으로 알고 있는 십진법을 이야기하는 건 십진법을 이처럼 조금 자세히 이해할 수 있어야 다른 진법들(특히 2진법) 을 조금 더 쉽게 이해할 수 있어서입니다. 궁극적으로는 제목에 적은 이진법에 대해 정리해볼 예정입니다만 그 전에 다른 진법들을 한 번 짧게 알아보겠습니다.
우리에게 가장 익숙한 것이 십진법이긴 합니다만, 의외로 실생활에서 흔하게 마주칠 수 있는 여러 다른 진법들이 있습니다. 가장 흔하게 살펴볼 수 있는 진법은 시간의 단위에서 찾아볼 수 있는 12진법과 60진법입니다.
시간은 12라는 수를 기준으로 자리수가 다시 리셋이 됩니다. 십진법의 수로 비교해 생각하면 십진법이 9
라는 수 다음에 0
을 쓴다면 12진법은 11
이후에 0 (또는 12)
를 사용합니다. 만약 0~23 을 이용해 시간을 표현한다면 24진법이라고 볼 수도 있겠죠.
60진법은 분 또는 초를 셀 때 사용됩니다. 이 때도 마찬가지입니다. 60이라는 수가 되면 자리 수가 하나 올라가게 되고, 다시 0으로 초기화됩니다. 60초 === 1분
이라는 개념이 되죠. 따라서 60진법을 기준으로 십의 자리에 5
라는 숫자가 있다면(=== 5분), 우리는 50초가 아닌 5 * 60 = 300초
라고 바꾸어 계산하게 됩니다.
드디어 이진법입니다. 이진법은 간단히 말해서 0
, 1
이 두 가지의 숫자로만 이루어진 진법입니다. 0
, 1
, 10
(십진법의 2), 11
(십진법의 3), 100
(십진법의 4) 이런 순서로 늘어나게 되죠.
이진법이 중요한 이유는 컴퓨터가 이해하는 언어가 이진법으로 이루어져 있기 때문입니다. 전기가 흐르거나, 혹은 흐르지 않거나, 이 2 가지의 상태를 나타낼 수 있는 아주 작은 소자가 모여 엄청난 연산을 해낼 수 있는 것이죠. Boolean 을 배울 때 1
을 truthy 한 값으로, 0
을 falsy 한 값으로 다루는 것도 이런 이진법의 특성 때문일 것 같습니다.
이진법의 덧셈과 곱셈은 아주 간단하다고 합니다. 덧셈의 경우에는 1
과 1
을 더하면 자리를 올려서 1
을 더해준다는 것만 기억하면 되구요. 곱셈의 경우에는 우리가 기본적으로 잘 알고 있는 것처럼 0
을 곱하면 0
이 되고 1
을 곱하면 자기 자신이 된다는 특성을 이용할 수 있다고 하네요.
글로 설명하기엔 조금 애매해 아래에서 덧셈과 곱셈이 어떻게 진행되는지를 한번 살펴보도록 하겠습니다. 검증해보고 싶으신 분들을 위해 2진법 계산기를 링크로 첨부하겠습니다.
덧셈
1101 (십진법으로 13)
+ 1001 (십진법으로 9)
---------
10110 (십진법으로 22)
곱셈
101 (십진법으로 5)
* 110 (십진법으로 6)
--------
000
101
+ 101
----------
11110 (십진법으로 30)
구구단을 외울 필요 없이 0
과 1
을 더할 줄만 알면 계산이 가능할 정도로 아주 간단해보입니다. 조금만 더 생각해보면 컴퓨터가 이진법을 사용하는 이유와도 쉽게 연결이 되는 것 같구요. 컴퓨터의 가장 작은 단위가 bit 인 것도 이진법을 이해하면 쉽게 이해가 되는 것 같습니다.
블로깅을 하면서 알게 되었습니다만, 인터넷 속도를 말하는 Mbps 라는 단위는 사실 Mega bit per second 의 약자라고 합니다. 따라서 우리가 흔히 사용하는 메가바이트로 환산하기 위해서는 1byte = 8bit 이므로 8로 나눠주어야 한다고 하네요.
윈도우를 사용할 때 운영체제가 32bit 인지 64bit 인지에 따라 설치해야 하는 파일이 다른 경우가 있었는데요. 32bit 운영체제를 사용하게 되면 최대 4GB의 램까지 밖에 사용할 수 없다고 합니다. 이는 32bit 로 나타낼 수 있는 숫자가 232, 약 43억까지인데, 4GB 의 메모리가 그 정도이기 때문이라고 하네요. (실제로는 3기가 정도라고 합니다.)
목요일부터 금요일까지 컴퓨터 공학의 기초에 관해 배웠습니다. 워낙에 깊이가 있는 부분들이다보니 배운 내용들을 정리하기엔 아직 모자람이 있는 것 같아 오늘은 책을 통해 접한 이진법에 대해 간단히 정리해보았습니다. 주말을 이용해 배운 것들을 조금 더 정리해보고 넘어가야겠습니다.