컴퓨터는 오직 0과 1로 이뤄진 이진수만을 이해할 수 있다. 바이너리(binary)라는 단어가 사전적으로 ‘이진의’, ‘이진수의’라는 의미이다. 그런데 컴퓨터에서 'ㄱ, ㄴ, ㄷ' 이나 'a, b, Z, T'등의 문자를 표시하려다 보니, 이 각각의 문자들을 숫자로 지정해야 만 했다. 즉 a는 십진수로 97, z는 122, 이런 식으로 규정을 해야 했다. 이렇게 규정을 해놓으면 그 값을 이진수로 변환해서 컴퓨터가 각 문자를 식별할 수 있었다.

 

컴퓨터 등장 초기에는 오늘날의 데스크탑과 같이 공통된 표준으로 나오지 않았다. 각자 고유의 특징을 가지고 하드웨어가 제작되었고, 거기에 맞춰 소프트웨어가 개발되었다. 그래서 각 문자들에 해당되는 값 역시 각 컴퓨터마다 달랐다. 이 때문에 서로 다른 회사에서 만든 컴퓨터간에 데이터를 교환해야 할 필요가 생긴 경우, 굉장히 곤란한 상황이 발생하게 되었다. 이 컴퓨터에서는 'abc' 라고 저장하였는데, 다른 컴퓨터에서 열어보면 '!#F' 라고 열린다든지 하는 의도하지 않은 일들이 발생하였다.

 

그래서 각 문자에 해당하는 숫자 값을 하나로 통일하자는 목적아래, ANSI 라는 표준을 정하는 단체에서 ASCII 라는 표준을 제정하였다. ASCII 는 American Standard Code for Information Interchange 의 약자로, 단어 의미대로 정보 교환을 위한 미국 표준 코드였다. 그런데 컴퓨터가 정보를 처리할 때 사용되는 기본 단위는 바이트(byte)였다. 8 자리의 이진수를 바이트 라고 한다.

 

1 바이트는 아래와 같이 8개의 2진수의 모음이다.
11001101

 

1 바이트는 십진수로 고쳐보면, 최소 0 (00000000) 에서 최대 255 (11111111) 사이의 값이다. 그래서 a 는 97, W 는 87, 이런 식으로 0 에서 255 사이에 있는 값들을 각 알파벳, 특수문자 등에 하나하나 대응해서 값을 지정을 하였다. 그러면 여기서 의문이 생기는 것이 “왜 a 를 1 이나 2 처럼 앞의 숫자로 할당하지 않고 저렇게 큰 숫자로 했을까”라는 의문이 생긴다. 그건 'control character' 때문이다.

 

당시 컴퓨터 단말기의 표준격인 TTY 에 쓰이던 조절 문자를 위해 앞의 0-32 를 남겨둬야 했다. 조절 문자라는 것은 폰트가 바뀐다든지, 전송의 끝을 알리는 문자라든지 하는 특수한 작업, 기능, 이벤트를 알려주는 특수 문자였다.

 

그 결과 조절 문자에 할당한 0-32 다음 값인 33부터 '보통의 문자' (화면상에 보여지는)를 하나하나 짝을 지우게 되었다. 아스키 33 은 ! 이고, 34 는 ", 35 는 #, 이런 형태로, 그렇게 해보면 0 부터 127 까지 사용해서 모든 '문자'를 모두 표시할 수 있다.

 

그러면 당연히 맨 마지막 비트 (128 부터 255 까지)는 사용하지 않아도 되니깐 8 자리 이진수의 첫번째 숫자는 '0' 으로 세팅된다. 그래서, 아스키 문자는 이진수로 바꾸었을 때 첫째 숫자가 0 이다. '7 비트 아스키 문자' 라는 용어는 그런 원리로 등장하였다. (물론 이 8 비트를 모두 다 사용하는 문자 세트도 있지만, 일단 이렇게 이해하자.)

 

이제 아스키가 뭔지?, 왜 아스키 문자는 '7비트' 인지?, 그리고 첫 문자값을 33으로 설정했는지? 등에 대해 이해하였을 것이다. 도대체 이러한 것들이 MIME와 무슨 상관이 있느냐? 문제는 컴퓨터 사이에서 이동되는 파일이 모두 다 아스키 문자로 이뤄진 텍스트 파일이 아니라는 데서 출발한다.

'old > Mobile' 카테고리의 다른 글

OSI 7계층 개념잡기  (0) 2010.05.10
인코딩과 디코딩  (0) 2010.05.10
Ad-Hoc 이란?  (0) 2010.05.10
MIME 개념잡기  (0) 2010.05.10
음수 2진수와 10진수간의 변환 방법  (0) 2010.05.10
Posted by jazzlife
,