미국정보교환표준부호(American Standard Code for Information Interchange; ASCII) : 1967년 표준 제정, 1986년 마지막 개정
이 코드를 이해하려면 먼저 타자기 시대를 이해해야 한다. 년도를 보면 타자기를 사용하던 시절에 제정하여, 컴퓨터 화면 출력 시절에 마지막 개정을 한다. 타자기인데 사람이 치는 것이 아니라 기계가 통신을 해서 자동으로 치는 타자기이다. 그래서 제어 명령(통신에 필요한 명령 + 타자기를 움직이는 명령)이 함께 들어 있다. 컴퓨터와 프린터도 이 아스키 코드로 통신할 수 있다. 프린터는 자동 타자기에 해당한다.
이진법
|
십육진법
|
십진법
|
약자
|
설명이 아닌 이름
|
엉터리 설명에 대한 추측
|
000 0000
|
00
|
0
|
NUL
|
Null Character
|
공백 문자(문자가 아니라 그냥 없음 표시)
|
000 0001
|
01
|
1
|
SOH
|
Start of Header
|
헤더 시작
|
000 0010
|
02
|
2
|
STX
|
Start of Text
|
본문 시작 & 헤더 종료
|
000 0011
|
03
|
3
|
ETX
|
End of Text
|
본문 종료
|
000 0100
|
04
|
4
|
EOT
|
End of Transmission
|
전송 종료 & 통신 초기화
|
000 0101
|
05
|
5
|
ENQ
|
Enquiry
|
응답하라!
|
000 0110
|
06
|
6
|
ACK
|
Acknowledgment
|
긍정응답 = OK/Yes/그렇다!
|
000 0111
|
07
|
7
|
BEL
|
Bell
|
경고음(삐~)
|
000 1000
|
08
|
8
|
BS
|
Backspace
|
백스페이스 = 커서 좌측 이동
|
000 1001
|
09
|
9
|
HT
|
Horizontal Tab
|
수평 탭 = 커서 우측 몇 칸 이동
|
000 1010
|
0A
|
10
|
LF
|
Line feed
|
개행 = 종이 한 줄 정도 올리기
|
000 1011
|
0B
|
11
|
VT
|
Vertical Tab
|
수직 탭 = 커서 아래 몇 칸 이동
|
000 1100
|
0C
|
12
|
FF
|
Form feed
|
다음 페이지 = 종이 넘기기
|
000 1101
|
0D
|
13
|
CR
|
Carriage return
|
복귀 = 커서 좌측 끝으로 이동
|
000 1110
|
0E
|
14
|
SO
|
Shift Out
|
확장문자(외국문자/그림문자) 시작
|
000 1111
|
0F
|
15
|
SI
|
Shift In
|
확장문자(외국문자/그림문자) 종료
|
001 0000
|
10
|
16
|
DLE
|
Data Link Escape
|
전송 제어 확장(탈출? 다른 방식으로 통신?)
|
001 0001
|
11
|
17
|
DC1
|
Device Control 1
|
장치 제어 1 (다른 장치가 있다면)
|
001 0010
|
12
|
18
|
DC2
|
Device Control 2
|
장치 제어 2
|
001 0011
|
13
|
19
|
DC3
|
Device Control 3
|
장치 제어 3
|
001 0100
|
14
|
20
|
DC4
|
Device Control 4
|
장치 제어 4
|
001 0101
|
15
|
21
|
NAK
|
Negative Acknowledgement
|
부정응답 = NG/No/아니다!
|
001 0110
|
16
|
22
|
SYN
|
Synchronous idle
|
동기 = 상대와 대화하기 위해 기다림?
|
001 0111
|
17
|
23
|
ETB
|
End of Transmission Block
|
전송블록 종료
|
001 1000
|
18
|
24
|
CAN
|
Cancel
|
무시 = 방금 전송한 것 무시해라?
|
001 1001
|
19
|
25
|
EM
|
End of Medium
|
매체 종료(중간 종료?)
|
001 1010
|
1A
|
26
|
SUB
|
Substitute
|
치환 = 잘 못 전송한 것 대체?
|
001 1011
|
1B
|
27
|
ESC
|
Escape
|
제어기능 추가(탈출? 다른 제어 명령 사용?)
|
001 1100
|
1C
|
28
|
FS
|
File Separator
|
파일경계 할당 = 파일 구분자
|
001 1101
|
1D
|
29
|
GS
|
Group Separator
|
레코드 그룹 경계 할당 = 그룹 구분자
|
001 1110
|
1E
|
30
|
RS
|
Record Separator
|
레코드 경계 할당 = 레코드 구분자
|
001 1111
|
1F
|
31
|
US
|
Unit Separator
|
장치 경계 할당(단위 구분자?)
|
이 구간은 화면에 표시 가능한 문자
|
알파벳 + 숫자 + 기호
|
||||
111 1111
|
7F
|
127
|
DEL
|
Delete
|
삭제 = 잘 못 전송한 것 삭제?
|
위에서 보통 Null이라고 하면 정말 아무 것도 없는 것을 말한다. 즉, 숫자 0도 아니고 문자 공백도 아니라 정말 무(無)이다.
1~6은 통신에 관한 것이다. 통신 시작한다. 끝낸다. 응답하라. 그런 내용이다.
7~15은 타자기를 제어하는 명령이다. 소리를 내거나. 문자를 두드리는 타자기 머리(케리지, 컴퓨터에선 커서)와 종이 넘기는 바퀴를 제어하는 것이다. 머리를 좌우로 한 칸 움직이거나 종이를 한 줄, 한 페이지 넘기는 것 등이다. 고로 컴퓨터에서 Enter는 LF+CR = CR+LF 조합이다.
16~20은 뭔가 다른 기계 장치가 연결 되어 있으면 그걸 제어하려는 명령이다. Escape는 탈출을 의미한다. 보통 무조건 빠져나가는 것을 의미한다. 헌데 이걸 중간에 다른 명령 삽입이라고 해석할 수도 있다. 보통 이런 코드 바로 뒤에 오는 코드는 다른 의미로 해석한다.
21~31, 127은 나중에 추가한 것 같다. 왜냐하면 보통 짝을 지어 나타나는 것들은 함께 제정한 것인데 나중에 추가한 것들은 땜질을 한 것이라 위치가 추가한 순서가 된다. 뭔가 통신 장애에 대한 대책과 메모리 기능이 있는 장치(프린터)에서만 통하는 명령이다. 이미 종이에 찍은 것을 취소하거나 지울 수는 없기 때문이다. 프린터는 자체 메모리가 있어 내용을 적당히 받은 후에 출력을 한다.
2진법
|
십육진법
|
십진법
|
모양
|
010 0000
|
20
|
32
|
공백
|
010 0001
|
21
|
33
|
!
|
010 0010
|
22
|
34
|
"
|
010 0011
|
23
|
35
|
#
|
010 0100
|
24
|
36
|
$
|
010 0101
|
25
|
37
|
%
|
010 0110
|
26
|
38
|
&
|
010 0111
|
27
|
39
|
'
|
010 1000
|
28
|
40
|
(
|
010 1001
|
29
|
41
|
)
|
010 1010
|
2A
|
42
|
*
|
010 1011
|
2B
|
43
|
+
|
010 1100
|
2C
|
44
|
,
|
010 1101
|
2D
|
45
|
-
|
010 1110
|
2E
|
46
|
.
|
010 1111
|
2F
|
47
|
/
|
011 0000
|
30
|
48
|
0
|
011 0001
|
31
|
49
|
1
|
011 0010
|
32
|
50
|
2
|
011 0011
|
33
|
51
|
3
|
011 0100
|
34
|
52
|
4
|
011 0101
|
35
|
53
|
5
|
011 0110
|
36
|
54
|
6
|
011 0111
|
37
|
55
|
7
|
011 1000
|
38
|
56
|
8
|
011 1001
|
39
|
57
|
9
|
011 1010
|
3A
|
58
|
:
|
011 1011
|
3B
|
59
|
;
|
011 1100
|
3C
|
60
|
<
|
011 1101
|
3D
|
61
|
=
|
011 1110
|
3E
|
62
|
>
|
011 1111
|
3F
|
63
|
?
|
100 0000
|
40
|
64
|
@
|
100 0001
|
41
|
65
|
A
|
100 0010
|
42
|
66
|
B
|
100 0011
|
43
|
67
|
C
|
100 0100
|
44
|
68
|
D
|
100 0101
|
45
|
69
|
E
|
100 0110
|
46
|
70
|
F
|
100 0111
|
47
|
71
|
G
|
100 1000
|
48
|
72
|
H
|
100 1001
|
49
|
73
|
I
|
100 1010
|
4A
|
74
|
J
|
100 1011
|
4B
|
75
|
K
|
100 1100
|
4C
|
76
|
L
|
100 1101
|
4D
|
77
|
M
|
100 1110
|
4E
|
78
|
N
|
100 1111
|
4F
|
79
|
O
|
101 0000
|
50
|
80
|
P
|
101 0001
|
51
|
81
|
Q
|
101 0010
|
52
|
82
|
R
|
101 0011
|
53
|
83
|
S
|
101 0100
|
54
|
84
|
T
|
101 0101
|
55
|
85
|
U
|
101 0110
|
56
|
86
|
V
|
101 0111
|
57
|
87
|
W
|
101 1000
|
58
|
88
|
X
|
101 1001
|
59
|
89
|
Y
|
101 1010
|
5A
|
90
|
Z
|
101 1011
|
5B
|
91
|
[
|
101 1100
|
5C
|
92
|
\
|
101 1101
|
5D
|
93
|
]
|
101 1110
|
5E
|
94
|
^
|
101 1111
|
5F
|
95
|
_
|
110 0000
|
60
|
96
|
`
|
110 0001
|
61
|
97
|
a
|
110 0010
|
62
|
98
|
b
|
110 0011
|
63
|
99
|
c
|
110 0100
|
64
|
100
|
d
|
110 0101
|
65
|
101
|
e
|
110 0110
|
66
|
102
|
f
|
110 0111
|
67
|
103
|
g
|
110 1000
|
68
|
104
|
h
|
110 1001
|
69
|
105
|
i
|
110 1010
|
6A
|
106
|
j
|
110 1011
|
6B
|
107
|
k
|
110 1100
|
6C
|
108
|
l
|
110 1101
|
6D
|
109
|
m
|
110 1110
|
6E
|
110
|
n
|
110 1111
|
6F
|
111
|
o
|
111 0000
|
70
|
112
|
p
|
111 0001
|
71
|
113
|
q
|
111 0010
|
72
|
114
|
r
|
111 0011
|
73
|
115
|
s
|
111 0100
|
74
|
116
|
t
|
111 0101
|
75
|
117
|
u
|
111 0110
|
76
|
118
|
v
|
111 0111
|
77
|
119
|
w
|
111 1000
|
78
|
120
|
x
|
111 1001
|
79
|
121
|
y
|
111 1010
|
7A
|
122
|
z
|
111 1011
|
7B
|
123
|
{
|
111 1100
|
7C
|
124
|
|
|
111 1101
|
7D
|
125
|
}
|
111 1110
|
7E
|
126
|
~
|
위의 코드는 종이에(모니터 화면에, 프린터에) 출력할 수 있는 문자이다. 로마 알파벳이 지금의 영어 알파벳의 원조인데 미국에서 만든 표준이라 다른 유럽 언어는 표현할 수 없다. 컴퓨터는 미국에서 먼저 만들었으니 할 수 없다. 그래서 유럽 (8비트로 확장) → 일본(16비트로 확장) → 한국(일본 모방) 등 자기 문자를 표현하려는 노력이 있었다.
아스키와 호환성을 유지하려고 제어 문자를 피하다 보니 코드가 꼬이고 지저분해졌다. 그래서 새로 깔끔하게 세계 문자코드를 만들자는 것이 유니코드인데 인터넷 통신에선 아스키와의 호환성 유지를 하려고 다시 지저분한 버전(UTF-8)을 만들어 사용하고 있다. 컴퓨터 내부에서 처리만 하려면 깔끔한 버전(UTF-16)을 사용하는 게 좋다.
한국은 법은 잘 만들었는데 사람이 지키지 않는다고 한다. 내 생각엔 개소리다.
기계는 잘 못 만들면 제대로 동작하지 않는다. 법도 마찬가지다.
대체로 법을 만드는 사람들은 두루뭉술하고 애매모호하게 만든다. 개구멍이 있다.
그래서 법을 코에 걸면 코걸이 귀에 걸면 귀걸이라고 한다.
정신 나간 대통령 탄핵도 못 하는 나라다. 판사 필요 없으니 배심원제 하자.
댓글 없음:
댓글 쓰기