숫자의 매력에 빠진 아이
이미 올림픽의 열기는 식었지만, 더 식기 전에 올림픽과 관련된 글 하나 투척 :)
이번 2024 파리 올림픽은 시차 덕분에, 주요 경기를 보는 것이 쉽지만은 않았다. 그럼에도 양궁이나 배드민턴 같은 종목들은 저녁에 펼쳐져 아이와 함께 열심히 응원을 하곤 했다. 어른들이야 경기를 보며 대한민국을 응원했지만, 아직 스포츠의 룰을 모르는 만 3세 우리 아들은 제사보다 젯밥에 관심을 가진다.
우리 아들에게 젯밥은 바로 점수를 표시해 주는 숫자이다.
올림픽 중계 화면은 위와 같다. 이제 유치원에서 숫자를 배우기 시작한 우리 아들은 연신 점수판에 있는 숫자를 읽기 바쁘다. 올림픽 초반에만 해도 숫자를 읽는 데 큰 애를 먹었다. 위 화면을 예로 들면, 숫자를 뒤에서부터 읽어서, "구, 일, 일!", "사, 일, 영!" 이런 식으로 읽곤 했다. 먼저 알려줘야 할 건 숫자를 왼쪽에서 오른쪽으로 읽어가야 한다는 점이었다.
그렇게 알려주니, 올림픽 중반부터는 "일, 일, 구!" 이런 식으로 읽기 시작했다. 그렇다면 그다음 단계는 두 자리 숫자 읽는 법을 알려주는 것이다. 숫자 9 다음에는 10이 온다는 10진법의 기본 원리를 알려주기 위해, 손과 발까지 동원하였고, 그 결과 올림픽이 끝날 때가 되어가자, 두 자리 숫자도 띄엄띄엄 읽기 시작했다.
이렇게 올림픽은 우리 아이에게 숫자 공부를 시켜주었다.
끝내 세트 스코어는 이해하지 못 함
우리 아이가 숫자 공부를 하는 데 있어 첫 번째 난관은 10진법의 이해였다. 10부터 시작되는 두 자리 숫자는 이제 숫자 하나하나 외우는 아이에게 넘사벽과 같은 존재였다. 그럼에도 반복되는 학습으로 두 자리 숫자 개념을 반은 외우고 반은 이해하게 된 데에는 10진법의 실용적인 구조가 한몫했다.
인류는 가지각색의 언어를 사용한다. 하지만 수 체계만큼은 고대 메소포타미아, 이집트 같은 초기 문명이 나온 이후 동일했다. 우리가 10진법을 쓰게 된 가장 큰 이유는 인간이 10개의 손가락을 가지고 있기 때문이다. 손가락을 사용하여 수를 세는 것은 매우 자연스러운 일이며, 이 때문에 자연스럽게 10이라는 숫자가 가장 기초적인 단위로 자리 잡게 된다.
10진법은 계산과 수의 표현에 있어 매우 직관적이고 단순하다. 우리 아들도 손을 이용해서 수를 셀 정도니 말이다. 이런 이유로 10진법은 일상생활에 널리 사용된다. 우리가 돈을 세거나 물건의 수를 셀 때와 같이 일상적인 상황에서 10진법은 매우 유용하다. 거기에 아라비아 숫자라는 표기 방법은 10진법에 날개를 달아 주었다. 쓰는 문자는 달라도, 전 세계 수 체계가 통일이 되는 순간이다.
현대 사회에서 10진법은 국제적으로 통용되는 표준 체계이다. 과학, 기술, 금융 등 다양한 분야에서 10진법을 사용하여 계산한다. 하지만, 10진법을 사용하지 않는 분야도 소수지만 존재한다.
바로 컴퓨터이다.
컴퓨터의 기본 구성 요소인 트랜지스터는 두 가지 상태, "켜짐" (1)과 "꺼짐" (0)의 두 가지 상태를 쉽게 표현할 수 있다. 이러한 이진(binary) 상태는 전압이 일정한 값 이상이면 켜지는 것으로, 일정 값 이하이면 꺼짐으로 정의된다. 이로 인해 컴퓨터는 자연스레 2진법을 사용하게 된다.
2진법은 많은 장점을 가지고 있다. 2진법을 사용하면 데이터를 컴퓨터 메모리와 저장 장치에 쉽게 저장하고 처리할 수 있다. 예를 들어, 컴퓨터 메모리는 데이터를 비트(bit) 단위로 저장하며, 비트는 0 또는 1의 값을 가진다. 이로 인해 메모리 구조와 데이터 접근이 간단해지고, 처리 속도도 빨라진다.
또한, 2진법은 논리 회로 설계와 구현을 단순하게 한다. 논리 게이트(AND, OR, NOT 등)를 기반으로 하는 회로들은 2진 데이터를 효율적으로 처리할 수 있다. 이러한 단순성으로 인해 컴퓨터 설계가 쉬워졌으며, 비용도 절감되고, 성능도 향상되었다.
컴퓨터 과학이 발전하며 2진법이 표준으로 자리 잡는다. 초키 컴퓨터들이 2진법을 사용했기에, 그 이후의 컴퓨터 설계와 프로그래밍 언어, 알고리즘 등도 모두 2진법을 기반으로 발전해 왔다. 오늘날 컴퓨터 과학을 전공한 학생들이 2진법에도 익숙한 이유가 이 때문이다.
하지만 2진법도 단점이 있다. 길고 읽기 어렵다는 점이다. 따라서 이를 짧고 이해하기 쉬운 형태로 표현하기 위대 등장한 것이 바로 16진법이다. 오늘날 컴퓨터가 16진법을 자주 쓰는 이유이기도 하다.
10진법도 아니고, 16이라는 어중간한 수를 기준으로 하는 16진법을 컴퓨터가 쓰는 이유는 2진법을 직접적으로 쉽게 변환할 수 있기 때문이다. 16진법의 한 자리(4비트)는 2진법의 4자리(비트)와 정확히 대응된다. 예를 들어, 2진수 '1010 1101'은 16진수 'AD'로 표현된다. 이는 2진수의 긴 표현을 간결하게 줄일 수 있어, 디지털 시스템에서 특히 유용하다. 가령 32비트 메모리 주소를 2진법으로 표현하면 32자리를 차지하지만, 16진법으로는 8자리로 줄일 수 있다. 그래서 주소를 관리할 때 16진법이 활용된다.
16진법은 나에게도 굉장히 의미가 큰 진법이다.
초등학교 시절, 밤새 열심히 했던 삼국지 게임은 당시 초딩인 나에게 난이도가 꽤 높았다. 성격이 급했기에 에디터를 구한 초딩. 하지만 당시 에디터는 세련되지 못했고, 위 스크린샷처럼 16진법으로 구현된 메모리에 직접 접근을 해서 수치를 수정해야 했다.
예를 들어 유비의 무력을 수정한다고 해보자. 그럼 먼저 해야 할 일은 유비의 무력이 어느 메모리에 저장되어 있는지 찾아야 한다. 메모리를 찾는 방법도 꽤나 복잡하기에 여기서는 넘어가고, 유비의 무력이 담긴 주소에 접근했다고 가정해 보자. 그다음 해야 할 일은 유비의 무력을 100으로 수정하는 것! 유비의 무력은 10진법으로 100이 한계이기에 16진법의 두 자리를 차지하고 있다. 해당 위치의 값을 10진법 '100'에 해당하는 16진법 '64'로 바꿔주면, 게임상에서도 유비의 무력은 100이 된다.
하지만, 당시 초딩이었던 나는 16진법에 대한 이해가 부족했다. 이런 아이들을 위한 에디터 방법! 그냥 16진법의 최고치인 'F'를 마구 적어주는 것이다. 유비의 무력을 차지하고 있는 두 자리에 그냥 'FF'를 입력하게 되면 유비의 무력은 천하무적이 된다. 바로 '255'! 이렇게 천문학적인 무력을 지니게 된 유비는 패배를 모르는 장군이 된다.
이렇게 무력을 수정하는 것만으로 만족을 못했던 나는 병력 수도 건드리기로 한다. 삼국지 시리즈마다 한 부대가 보유할 수 있는 병력의 수가 차이는 있지만, 대체로 2만 명의 병사를 지니는 것이 한계이다. 하지만 HEX 에디터와 함께라면 어마무시한 병력 소유도 가능하다.
한 부대의 병력 수는 16진법으로 4자리를 차지한다. 아무 생각 없이 이 네 자리에 'F'를 다 채워준다. 'FF FF'를 병력으로 채워주면, 게임 상에서 보유하게 되는 병력은 '65535'가 된다. 다른 군단은 많아봐야 2만 명을 끌고 오지만, 우리는 무력 255의 유비가 이끄는 65535명의 군단을 보유하고 있기에, 아주 쉽게 전투에서 승리가 가능하다.
훗날, 초등학교 고학년이 되고 진법에 대해 공부를 한 후에야 당시 왜 무력이 255가 되고, 병력이 65535가 되었는지를 이해할 수 있었다. 이처럼 어쩔 때는 이론에 대한 이해보다 단순 무식한 방법으로 문제를 해결해 가는 것이 도움이 될 때도 있다. 구구단을 이해하는 것도 중요하지만, 일단 외우고 보는 것도 이와 같은 이유가 아닐까?
여전히 우리 아이는 '한국을 빛낸 100명의 위인들' 노래와 책을 좋아한다. (관련글 : 우리 아이가 처음 좋아하게 된 위인은? ) 책의 마지막 장을 보면 100명의 위인이 각각 자신의 숫자를 가지고 나열되어 있다.
마지막 장에 나온 숫자를 하나하나 읽어 나가던 녀석은 마지막에 '100'을 보고 깜짝 놀란다.
"아빠! 세 개 숫자도 있어!"
"백은 정말 큰 숫자야!"
"세 개 숫자도 있다고 선생님한테 이야기할 거야!"
두 자리 수만으로도 신세계였는데, 세 자릿수를 보니 또 다른 신세계를 만난 것만 같나 보다. 좋아서 방방 뛰어다니는 녀석이다.