컴퓨터의 원리 1강. 세상을 0과 1로 적는 법
컴퓨터가 0과 1만 쓰는 것은 그 편이 우아해서가 아니라, 잡음이 끼는 전기 회로에서 가장 덜 틀리는 약속이기 때문입니다.
풀고 시작
왜 하필 두 개였을까
이진법이 "가장 단순해서" 선택됐다고 배우면 절반만 아는 것입니다. 진짜 이유는 훨씬 지저분하고 실전적입니다. 전선을 흐르는 전압은 언제나 흔들립니다. 옆 회로의 간섭, 소자의 발열, 전원의 미세한 요동이 신호 위에 잡음을 얹죠. 만약 0V부터 10V까지를 열 칸으로 잘라 십진 숫자를 표현한다면 한 칸의 폭은 1V뿐이고, 잡음이 0.6V만 껴도 3이 4로 둔갑합니다. 반면 "낮으면 0, 높으면 1"이라는 두 칸만 쓰면 판정 기준선까지 몇 볼트씩 여유가 남습니다. 이 여유를 잡음 여유(noise margin)라고 부릅니다. 초기 컴퓨터 에니악(ENIAC)은 실제로 십진법으로 동작했고, 그 대가로 훨씬 복잡한 계수 회로를 떠안았습니다. 이진법은 미학적 취향이 아니라 물리 세계에 대한 공학적 항복 선언에 가깝습니다. 덤으로 참과 거짓 두 값만 다루는 논리학과 구조가 그대로 포개지는데, 이 이야기는 2강에서 이어집니다.
비트, 그리고 바이트라는 관습
한 자리의 0 또는 1을 비트(bit)라고 부릅니다. binary digit을 줄인 말이고, 이 이름은 통계학자 존 튜키가 제안한 것을 섀넌이 널리 퍼뜨렸습니다. 비트 하나는 두 가지 상태를 구분하고, 비트를 n개 늘어놓으면 2ⁿ가지를 구분합니다. 8비트면 256가지, 16비트면 65536가지죠. 여기서 중요한 감각은 이겁니다. 비트는 수를 담는 그릇이 아니라 구분의 개수를 정하는 자릿수입니다. 그 256가지에 무엇을 대응시킬지는 순전히 약속의 문제라서, 같은 8비트 덩어리가 어떤 약속에서는 정수 200이고 다른 약속에서는 글자 하나이며 또 다른 약속에서는 화면 한 점의 밝기입니다. 8비트를 한 덩어리로 묶어 바이트(byte)라 부르는 관습은 물리 법칙이 아니라 산업 표준이 굳은 결과입니다. 컴퓨터가 데이터를 오해하는 사고는 대개 이 약속을 잘못 고른 데서 생깁니다.
아스키에서 유니코드로, 그리고 한글의 수난
글자를 숫자에 대응시키는 표를 문자 인코딩이라고 합니다. 1963년에 제정된 아스키(ASCII)는 7비트로 128자를 정했는데, 영어 알파벳과 숫자와 기호만으로 자리가 꽉 찼습니다. 남은 나라들은 각자 빈 자리를 자기 문자로 채웠고, 그래서 한국에는 완성형 표준인 EUC-KR이 자리 잡았습니다. 문제는 여기에 담긴 한글 음절이 2350자뿐이었다는 점입니다. 드라마 제목 "똠방각하"의 '똠' 같은 글자를 컴퓨터로 쓸 수 없었던 유명한 사건이 여기서 나옵니다. 조합형이냐 완성형이냐를 두고 벌어진 논쟁도 이 결핍의 산물이었죠. 해법은 세상의 모든 문자에 고유 번호(코드 포인트)를 하나씩 주자는 유니코드였습니다. 다만 유니코드도 1990년대 중반 2.0판에서 한글 음절 영역을 통째로 옮기는 바람에 이전 버전과 호환이 깨졌고, 이 사고는 이후 유니코드가 한번 배정한 자리를 절대 옮기지 않는다는 안정성 원칙을 세우게 만들었습니다. 오늘날 널리 쓰이는 UTF-8은 그 번호를 실제 바이트로 적는 방식이며, 아스키 글자는 1바이트로 그대로 두고 한글은 3바이트를 씁니다. 웹에서 글자가 깨져 보이는 현상은 파일이 손상된 것이 아니라, 적을 때와 읽을 때 서로 다른 약속을 쓴 것입니다.
사진과 소리를 숫자로 바꾸는 두 번의 반올림
연속적인 세계를 이산적인 숫자로 옮기는 데는 두 단계가 필요합니다. 먼저 표본화(sampling)로 시간이나 공간을 잘게 자릅니다. 사진은 화면을 격자로 나눠 각 칸을 하나의 점으로 삼고, 소리는 시간축을 촘촘히 끊어 그 순간의 진폭만 골라냅니다. 그다음 양자화(quantization)로 각 표본의 값을 정해진 단계 중 가장 가까운 것으로 반올림합니다. 사진 한 점의 색을 빨강·초록·파랑 각 8비트로 적으면 채널당 256단계가 되고, 소리 한 표본을 16비트로 적으면 65536단계가 됩니다. 여기서 놀라운 정리가 등장합니다. 나이퀴스트와 섀넌의 표본화 정리는 대역이 제한된 신호라면 그 안에 담긴 가장 높은 주파수의 두 배보다 촘촘하게 표본을 뜨는 것만으로 원래의 연속 파형을 정확히 복원할 수 있다고 말합니다. 사람의 가청 한계가 대략 20kHz라서 CD가 초당 44100번을 표본으로 뜨는 것은 이 정리를 따른 설계입니다. 반면 양자화는 반올림이라서 되돌릴 수 없는 오차를 남기고, 그 오차가 양자화 잡음으로 들립니다. 디지털이 "완벽한 복제"인 것은 맞지만, 그것은 이미 반올림이 끝난 숫자를 완벽히 복제한다는 뜻입니다.
섀넌: 정보란 놀라움의 양
마지막 조각은 클로드 섀넌이 1948년 논문에서 놓았습니다. 그는 정보를 불확실성이 줄어든 양으로 정의했습니다. 사막의 일기예보가 매일 "맑음"이라면 그 예보는 거의 정보를 주지 않고, 결과를 예측하기 어려울수록 그 답이 도착했을 때의 정보량이 큽니다. 이 평균적인 놀라움의 크기가 엔트로피(entropy)이고, 단위가 바로 비트입니다. 섀넌의 결정적인 선택은 정보에서 의미를 명시적으로 잘라낸 것이었습니다. 그는 통신의 공학적 문제에서 메시지의 뜻은 무관하다고 못 박았습니다. 이 냉정한 태도 덕분에 압축과 오류 정정의 수학이 가능해졌습니다. 자주 오는 기호에 짧은 코드를 주면 평균 길이를 엔트로피 근처까지 줄일 수 있고, 그 아래로는 원리상 줄일 수 없다는 한계선까지 계산됩니다. 우리가 지금 다루는 모든 파일 크기와 통신 속도의 뒤에는 이 한 편의 논문이 깔려 있습니다.
인출 문제
생각해볼 질문 (정답 없음)
- 섀넌은 의미를 잘라내고서야 정보를 계산할 수 있었습니다. 그렇다면 오늘날 "정보화 사회"나 "정보의 홍수"라고 말할 때의 정보는 섀넌이 말한 그 정보와 같은 것일까요, 아니면 이름만 빌려 온 다른 개념일까요.
이전: 컴퓨터과학 서가 · 다음: 컴퓨터의 원리 2강