우리가 의미를 전달하기 위해선 인코딩과 문맥이 있어야 한다. 인코딩이란 의미를 표현하기 위한 기호와 기호의 순서의 조합을 의미하고 문맥이란 해당 인코딩을 해석하는 경험적 약속이라고 할 수 있다.
우리가 언어를 모르는 아기와 대화하기 위해선, 아이가 알아들을 수 있는 언어로 접근해야한다. 아이가 불안해하면 얼굴을 비춰서 안심시켜주고, 울면 문제를 찾아 해결해주어야 한다.
사실 이것은 누구와 대화하더라도 마찬가지다. 어떤 대상과 대화하려면, 그 대상의 언어에 맞춰야한다. 외국인, 강아지, 고양이, 어른, 배우자, 자식 할 것 없이 마찬가지다. 컴퓨터와의 대화도 컴퓨터와 대화를 원하는 우리가 컴퓨터의 언어에 맞춰야 한다.
그렇다면 컴퓨터는 어떻게 언어를 표현할까. 컴퓨터는 기본적으로 전기가 흐르고, 흐르지 않는 것을 통해서 정보를 저장한다. 물론, 우리가 전깃줄을 가지고 전기를 흘리고 말고로 대화할 수는 없는 노릇이다. 때문에 인간이 사용하는 기호를 통해 전기적 신호로 번역해서 컴퓨터와 대화한다. 전기신호로 번역하기 전, 전기신호를 켜달라는 요청을 1로 꺼달라는 요청을 0으로 하는 언어의 단위를 비트라고 한다. 사실 True와 False 혹은 On과 Off, 'a'와 'b', '가'와 '나'로도 표현할 수 있지만, 연속적으로 표현하기도 유리하고 범 지구적으로 활용되는 기호인 아라비아 숫자 그 중에서도 0과 1이 신호가 있고 없음을 비교적 직관적으로 표현할 수 있다.
비트로는 다양한 정보를 표현하고 전달할 수 있다. 그 중에서도 가장 쉬운 예시는 자연수의 표현일 것이다. 하나의 비트로 표현한 자연수는 일반적으로 0과 1이다. 0은 0을 의미하고, 1은 1을 의미한다. 그리고 두 개의 비트로 표현하면 이진수로서 해석할 수 있다. 00은 0을 의미하고, 01은 1을 의미하고, 10은 2을 의미하고, 11은 3을 의미한다.
이 해석에는 기호와 기호의 순서, 해석방법이 모두 담겨있다. 모든 정보는 0과 1로만 표현해야 하며, 01과 10은 각각 1이 하나 0이 하나임은 같지만 순서에 의해 의미가 달라질 수 있다. 해석 방법은 n자릿 수마다 2n의 수를 더할지 말지를 표현한다. 만약 이 규칙을 n자릿 수마다 3n의 수를 더할지 여부를 결정하는 규칙으로 변경하면 00은 0을, 01은 1을, 10은 3를, 11은 4를 표현하게 될 것이다. (물론 이 경우에는 표현하지 못하는 수가 생겨난다.)
멍 때리면서 대화하면, 문맥 없는 단어의 나열이 되기 십상이다.