본문 바로가기

개발자 페이지/Code

아스키 코드 간단 정의 & 짧은 역사

728x90
반응형

만일 자체적으로 컴퓨터를 만들려고 하는데, 컴퓨터의 하드웨어 전체를 구성할 것이고, 이 컴퓨터를 이용하여 다른 컴퓨터와 연결할 일이 전혀 없다고 가정하면, 원하는 대로 부호를 할당하더라도 아무 문제도 발생하지 않을 것이다. 즉, 각각의 문자에 우리가 원하는 고유의 부호를 어떤것이든 할당할 수 있다는 말이다. 하지만 컴퓨터가 완벽히 독립적으로 만들어지고 구동되는 경우는 극히 적기 때문에 컴퓨터에서 통일된 부호를 모두 같이 이용하는 것이 훨씬 합리적일 것이다. 이러한 방법을 사용함으로써 컴퓨터는 다른 기기와의 호환성을 좀 더 높일 수 있으며 문자로 표현된 정보를 쉽게 교환할 수 있을 것이다. 다행히 이에 대한 표준은 이미 개발되어 있다. 이 표준이 바로 보통 아스키 부호라 이야기하는 것이다.

 

미국 표준 부호 (American Standard Code for Information Interchange; ASCII)

이 부호는 1967년에 제정되었으며, 컴퓨터 산업에서 가장 중요한 표준들 중 하나입니다. 아주 중요한 예외가 있기는 하지만, 기본적으로 컴퓨터로 문자를 다루고 있다면 어떤 방식으로든 아스키 부호가 사용되고 있다고 생각해도 된다.

 

아스키 부호는 7비트 부호로서 이진수 00000000에서 11111111까지를 사용하며 16진수로 나타내면 00h에서 7Fh까지를 사용한다.

 

아래표는 16진수 부호와 각 부호에 대응하는 문자를 보여준다. 한 테이블당 16열로 16진수 단위로 표기하였다.

 

구두점과 10개의 숫자 (32개)

더보기
16진 부호 ASCII 문자 16진 부호 ASCII 문자
20 공백 30 0
21 ! 31 1
22 " 32 2
23 # 33 3
24 $ 34 4
25 % 35 5
26 & 36 6
27 ' 37 7
28 ( 38 8
29 ) 39 9
2A * 3A :
2B + 3B ;
2C , 3C <
2D - 3D =
2E . 3E >
2F / 3F ?

 

대문자와 추가적인 구두점 (32개)

더보기
16진 부호 ASCII 문자 16진 부호 ASCII 문자
40 @ 50 P
41 A 51 Q
42 B 52 R
43 C 53 S
44 D 54 T
45 E 55 U
46 F 56 V
47 G 57 W
48 H 58 X
49 I 59 Y
4A J 5A Z
4B K 5B [
4C L 5C \
4D M 5D ]
4E N 5E ^
4F O 5F _

소문자와 추가적인 구두점 (32개)

더보기
16진 부호 ASCII 문자 16진 부호 ASCII 문자
60 ` 70 p
61 a 71 q
62 b 72 r
63 c 73 s
64 d 74 t
65 e 75 u
66 f 76 v
67 g 77 w
68 h 78 x
69 i 79 y
6A j 7A z
6B k 7B {
6C l 7C |
6D m 7D }
6E n 7E ~
6F o 7F  

 

예제,

Hello, you! 

위와 같은 문자열은 다음과 같은 16진수 아스키 부호로 표현될 수 있다.

 

48 65 6C 6C 6F 2C 20 79 6F 75 21

 

I am 12 years old.

위 문장도 다음과 같은 아스키 표현으로 나타낼 수 있다.

 

49 20 61 6D 20 31 32 20 79 65 61 72 73 20 6F 6C 64 2E

 

컴퓨터 세계에서 아스키 부호가 가장 많이 사용되고 있기는 하지만, IBM의 대형 컴퓨터들에서는 그다지 많이 사용되지 않았다. System/60 컴퓨터에 사용하기 위하여 IBM은 8비트 EBCDIC(확장된 BCD 교환 부호, Extended BCD Interchange Code, 엡시딕이라 발음한다.) 부호 체계를 개발하여 사용하였으며, 이는 이전에 IBM의 천공카드에서 유래한 6비트 BCDIC에서부터 확장된 부호이다. 80문자의 문서를 저장할 수 있는 천공카드는 1928년에 IBM에 의하여 개발되었으며, 약 50년 이상 사용되었다. 천공카드와 8비트 EBCDIC 부호와의 연관성을 볼 때 이러한 부호들이 수십 년에 걸쳐서 서로 다른 형태의 기술을 기반으로 발전되어 왔다는 점은 이것들이 아주 논리 정연하거나 일관성이 있는 것은 아니라는 말이다.

천공카드

각 문자는 천공카드의 각 칼럼마다 한 개 혹은 여러 개의 사각형 구멍을 뚫어서 이를 조합함으로써 인코딩 된다. 많은 경우 문자 자체는 천공카드의 윗부분에 인쇄된다. 그 아래쪽 10줄은 숫자로 식별되며, 보통 0번 행, 1번 행과 같이 번호가 매겨져서 9번 행까지 존재한다. 0번 행 위쪽에 숫자가 매겨져 있지 않은 줄은 11번 행이며, 맨 윗줄은 12번 행이라고 한다. 10번 행이 없다는 점에 주의할 필요가 있다.

 

IBM 천공카드에서 사용하는 용어를 조금더 살펴보자면

 

0~9번 행까지는 숫자 행(digit row) 혹은 숫자 천공(digit punch).

11번과 12번 행은 영역 행(zone row) 혹은 영역 천공(zone punch).

 

IBM 천공카드에서도 약간 혼란스럽게 사용되는 부분이기는 한데 가끔은 0~9번 행이 숫자 행이 아닌 영역 행으로 사용될 때도 있다. 

 


아스키 부호가 개발되었을 당시에는 메모리가 매우 비쌌고 메모리를 아끼기 위하여 아스키 부호를 6비트로 줄이고 소, 대문자의 전환은 시프트 부호를 이용해야 한다는 주장도 있었지만 받아들여지지 않았다. 다른 한편 컴퓨터가 8비트 아키텍처를 사용할 것이므로 아스키 부호도 8비트가 되어야 한다는 주장도 있었고 지금은 8비트 한바이트를 사용하는 것이 표준이 되었다. 아스키 부호는 기술적으로는 7비트 부호이지만 대부분 8비트 값으로 저장이 된다.

 

문자의 수와 바이트의 길이가 같으면 문서를 저장하는 데 필요한 메모리의 크기를 추정하기 위하여 단순하게 문자의 수를 세면되므로 편리하다. 컴퓨터 저장장치의 크기를 나타낼 때 킬로바이트나 메가바이트 단위가 아닌 문서의 양으로 표현할 수 있으므로 좀 더 이해하기 쉽게 표현할 수 있다.

 

ASCII 부호가 컴퓨터 산업에서 가장 중요한 표준인 것은 사실이지만 완벽하지는 않다. 정보 교환을 위한 미국 표준 부호, 즉 아스키 부호의 가장 큰 문제점은 미국 실정에만 너무 맞추어져 있다는 것이다. 

 

전세계의 언어를 모두 표현하기에 적합하고, 모호하지 않은 명확한 표준이 있다면 좀 더 개발에 편리할 것이라는 공감대로 인하여 1988년에 주요 컴퓨터 회사들은 아스키 부호를 대체할 유니코드(Unicode)의 개발에 착수했다. 아스키 부호가 7비트 부호인 반면에 유니코드는 16비트 부호다. 즉, 유니 코드에 존재하는 각각의 문자를 표현하려면 2바이트가 필요하다. 이는 총 65,536자를 표현할 수 있으며, 이는 컴퓨터 간의 통신을 위하여 세계의 모든 언어를 수용하기에 충분하며, 확장을 위한 방법도 제공한다.

 

유니코드는 아스키 부호에 비해 2배 많은 메모리 용량을 필요로 하지만  문자 인코딩 체계에 있어서 모호성을 없앨 수 있다면, 이 정도의 비용은 충분히 지불할 만한 가치가 있어 보인다.

728x90

'개발자 페이지 > Code' 카테고리의 다른 글

반도체란? 트랜지스터의 발명 및 역사  (0) 2022.11.09
혼자서 움직이는 컴퓨터  (0) 2022.10.11
Filp flop 회로 ( NOR )  (0) 2022.09.07
Relay / Inverter Relay  (0) 2022.08.25