알쓸잇(it)잡/아는척-컴퓨터

컴퓨터는 글자를 어떻게 읽을까?

IT조아(it-zowa) 2025. 9. 29. 05:26
728x90
반응형

우리는 키보드에서 ‘A’를 치면 화면에 ‘A’가 나타나는 것을 너무도 당연하게 여긴다. 하지만 잠시 멈춰 생각해 보자. 컴퓨터는 본래 0과 1밖에 모르는 기계다. 문자 ‘A’이든, 사진 한 장이든, 음악 파일이든, 모두 0과 1의 긴 줄로 표현된다. 그런데도 우리가 키보드로 ‘A’를 치면 화면에는 분명히 ‘A’가 나타난다. 과연 컴퓨터는 어떻게 글자를 이해하고, 심지어 전 세계의 언어까지 표현할 수 있을까?

 

만약 “A를 눌렀으니 그냥 A가 나온 거지”라고 대답한다면, 아직 컴퓨터 속 세상의 비밀을 풀 준비가 덜 된 것이다.

숫자와 문자의 약속

비밀은 ‘약속’에 있다.

 

축구 경기장에서 선수들은 등번호를 달고 뛴다. 유니폼의 ‘7번’이라는 숫자는 단순한 숫자일 뿐이다. 하지만 모두가 “LAFC의 7번은 손흥민이다, 마이애미의 10번은 메시다”라고 각 팀에서 정해놓았기 때문에, 우리는 팀과 번호만 보고도 선수를 떠올린다.

 

컴퓨터도 마찬가지다. 문자와 숫자를 서로 연결해 둔 약속표, 바로 이것이 문자 코드(Character Code)다. 문자 코드 중에서 대표적인 체계가 바로 아스키(ASCII) 코드다. 아스키 코드에서는 숫자 65는 ‘A’, 숫자 66은 ‘B’,... , 숫자 97은 ‘a’와 같이 약속해 놓았다.

 

키보드에서 ‘A’를 누르면 실제로는 65라는 숫자가 컴퓨터에 입력된다. 그리고 모니터는 “65번은 A”라는 규칙을 적용해 우리가 아는 문자로 그려준다. 컴퓨터는 글자를 직접 읽지 못한다. 대신 숫자와 문자 사이의 "코드변환 매핑(mapping)"이라는 번역 사전을 참조하며, 사람과 대화를 이어가는 것이다.

 

즉, 컴퓨터와 사람이 서로 의사소통할 수 있는 비밀은 숫자와 문자를 미리 짝지어 정해둔 약속표에 있는 것이다. 이 약속표가 바로 문자 코드이며, 대표적인 것이 ASCII, 유니코드 등이다. 팀마다 등번호가 다르게 정해져 있듯이 각 문자코드에서 숫자와 문자의 매핑은 다르게 정해져 있다.

ASCII - 문자 코드의 출발

1960년대, 미국은 전자통신의 표준을 위해 ASCII(American Standard Code for Information Interchange) 코드를 만들었다. ASCII는 7비트를 사용해 128개의 문자를 표현할 수 있었으며, 이 안에는 알파벳 대소문자, 숫자, 기호, 그리고 줄 바꿈이나 스페이스 같은 제어 문자가 포함됐다. 그리고 첫 번째 비트를 문자구분 표시로 사용하여 ASCII 코드는 8비트로 구성되어 있다.

 

ASCII 코드에서 문자 매핑의 예를 보면 다음과 같다.

  • ‘A’ = 01000001 (10진수 65)
  • ‘B’ = 01000010 (10진수 66)

아스키 코드 테이블 ( 출처 : 위키백과 )

 

ASCII의 등장은 혁명적이었다. 전 세계의 컴퓨터가 공통된 “번역 사전”을 갖게 되었기 때문이다. 덕분에 서로 다른 기계도 안정적으로 문자를 주고받을 수 있었다. 하지만 곧 한계가 드러났다. ASCII는 영어 중심으로 만들어졌기 때문에 한글, 한자, 아랍어 같은 다양한 언어를 표현하기에는 턱없이 부족했다.

다른 도전들 - EBCDIC

1960년대, IBM은 자사의 대형 컴퓨터에서 사용하기 위해 EBCDIC이라는 또 다른 문자 코드를 만들었다. 8비트로 구성되어 있으나 ASCII와 호환되지 않아, 같은 문서를 열어도 엉뚱한 기호가 나타나는 문제가 생겼다. 결국 호환성의 벽을 넘지 못한 EBCDIC은 표준의 자리를 얻지 못했다. 마치 지역 리그에서만 통하는 규칙이 세계대회에서는 힘을 못 쓰는 것과 같았다.

 

이 외에도 몇 가지 도전이 있었으나, 로마 문자권에서는 대부분 ASCII 코드가 대중적인 표준으로 자리 잡아 지금까지도 널리 사용되고 있다.

유니코드 - 문자 코드의 통합 언어

세상이 글로벌화되면서, 컴퓨터는 더 이상 영어만 처리해서는 안 되었다. 한국어, 일본어, 중국어, 아랍어, 심지어 이모지까지 표현해야 했다. 그래서 각국은 자신들의 언어를 위한 별도의 문자 코드 체계를 만들었다. 그러나 이들 문자 코드 체계는 제각각이어서, 파일을 옮기면 글자가 깨지는 ‘문자 깨짐’ 현상이 일상적이었다.

 

이 혼란을 해결하기 위해 나온 것이 유니코드(Unicode)이다. 목표는 단순하다. 

“전 세계 모든 문자를 하나의 코드 체계에 담자.”

 

오늘날 가장 널리 쓰이는 UTF-8 방식은, 영어 알파벳은 1바이트로, 한국어와 한자는 2~3바이트로, 이모지는 더 많은 바이트로 표현한다. 효율적이면서도 전 세계 거의 모든 언어를 지원한다. 우리가 스마트폰에서 한국어, 영어, 이모지를 뒤섞어 메시지를 주고받을 수 있는 것도 바로 유니코드 덕분이다.

코드의 생존 법칙

문자 코드도 일종의 문화다. 사람들이 많이 쓰고, 서로 호환이 잘 되어야 살아남는다. ASCII는 출발점이 되었고, IBM의 EBCDIC은 폐쇄성 때문에 사라졌다. 지금은 글로벌 소통의 시대에 맞춘 유니코드가 사실상 세계 공용 표준이 되었다.

 

문자는 본래 인간의 것이었다. 그러나 디지털 문명 속에서 문자는 숫자로 번역된 새로운 삶을 살고 있다. ‘A’는 이제 단순한 기호가 아니라, 65라는 숫자와 맞닿아 있고, 한국어 한 글자 역시 유니코드 안의 특정 숫자로 자리 잡았다. 오늘날 우리는 한국어로 된 소설을 전 세계에 전송할 수 있고, 미국인이 보낸 이모지를 그대로 받아볼 수 있다. 문자 코드라는 보이지 않는 약속 덕분에 인류의 언어는 디지털 공간에서 공존할 수 있게 된 것이다.

반응형