모던지 / 컴퓨터과학 / 컴퓨터의 원리 1강. 세상을 0과 1로 적는 법

컴퓨터의 원리 1강. 세상을 0과 1로 적는 법

컴퓨터가 0과 1만 쓰는 것은 그 편이 우아해서가 아니라, 잡음이 끼는 전기 회로에서 가장 덜 틀리는 약속이기 때문입니다.

풀고 시작

문제 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)이고, 단위가 바로 비트입니다. 섀넌의 결정적인 선택은 정보에서 의미를 명시적으로 잘라낸 것이었습니다. 그는 통신의 공학적 문제에서 메시지의 뜻은 무관하다고 못 박았습니다. 이 냉정한 태도 덕분에 압축과 오류 정정의 수학이 가능해졌습니다. 자주 오는 기호에 짧은 코드를 주면 평균 길이를 엔트로피 근처까지 줄일 수 있고, 그 아래로는 원리상 줄일 수 없다는 한계선까지 계산됩니다. 우리가 지금 다루는 모든 파일 크기와 통신 속도의 뒤에는 이 한 편의 논문이 깔려 있습니다.

인출 문제

문제 1. 비트 수와 표현 가능한 상태 수의 관계를 옳게 설명한 것은 무엇일까요?
비트 하나가 붙을 때마다 경우의 수가 두 배가 되므로 n비트는 2의 n제곱 가지를 구분합니다. 8비트면 256가지, 16비트면 65536가지가 되죠. 256이라는 숫자는 8비트라는 특정 관습에서 나온 값일 뿐 일반 규칙이 아닙니다.
문제 2. 웹페이지의 한글이 깨진 기호로 보일 때 실제로 일어난 일은 무엇일까요?
바이트 자체는 멀쩡하고, 그 바이트를 글자로 되돌리는 표가 어긋난 것입니다. EUC-KR로 적은 문서를 UTF-8로 읽으면 같은 숫자가 엉뚱한 글자로 해석되죠. 전송 손상이나 코드 포인트 미배정은 훨씬 드문 일이고, 글꼴 문제라면 글자 대신 빈 네모가 나타납니다.
문제 3. 표본화와 양자화 중 되돌릴 수 없는 오차를 남기는 쪽과 그 이유는 무엇일까요?
표본화는 조건만 지키면 손실이 없습니다. 표본화 정리에 따라 최고 주파수의 두 배보다 촘촘히 뜨면 원래 파형을 복원할 수 있죠. 반면 양자화는 실제 값을 가장 가까운 단계로 반올림하는 과정이라 버려진 차이가 남고, 그것이 양자화 잡음이 됩니다.
문제 4. 섀넌이 정보를 정의할 때 의도적으로 배제한 것은 무엇일까요?
섀넌은 통신의 공학적 문제에서 메시지의 뜻은 무관하다고 명시했습니다. 정보량은 오직 사건의 확률 분포로만 계산되죠. 확률과 놀라움, 평균 부호 길이는 배제된 것이 아니라 오히려 그의 이론의 중심 재료였고, 선로의 물리적 특성도 채널 용량이라는 이름으로 정면으로 다뤄집니다.

생각해볼 질문 (정답 없음)

  • 섀넌은 의미를 잘라내고서야 정보를 계산할 수 있었습니다. 그렇다면 오늘날 "정보화 사회"나 "정보의 홍수"라고 말할 때의 정보는 섀넌이 말한 그 정보와 같은 것일까요, 아니면 이름만 빌려 온 다른 개념일까요.

이전: 컴퓨터과학 서가 · 다음: 컴퓨터의 원리 2강

모던지 · 궁금하면 모던지 GitHub · 2026-09-10