1. 부호에 대해
컴퓨터상에서 전기가 흐른다(1)와
흐르지 않는다(0)의 나열만으로는 사람이 실생활에 쓰이는 수체계나 언어의 표현에 불편함을 느낄 수밖에
없다. 따라서 특정한 2진수의 나열들에 대해서 어떤 의미를
갖도록 약속을 하는데 이것을 포괄적으로 부호(Code)라고 부른다.
별도의 기준이 정해져 있지는 않으나 크게 두 가지로 컴퓨터 장치의 오류를 줄이거나 확인하려는 코드와 사람이 숫자나 문자를
편하게 쓰기 위한 부호로 나눌 수 있다. 부호의 종류는 아래의 내용보다 더 많지만 사람의 편의를 위한
부호를 몇 가지만 보도록 한다.
2. 8421 부호
사람은 10진수를
기본으로 쓰는데 컴퓨터는 2진수를 기본으로 쓰는 환경이니 가독성이 떨어진다. 특히, 10진수 표기의 자릿수가 많아지거나 날짜/시간과 같이 10진 체계가 아닌 10진수
표현을 할 때마다 변환하기에 불편하다.
이에 10진수 1자리마다 2진수 4자리를 할당하여 010부터 910까지에
대응하는 10가지의 정해진 배열을 사용하며, 그 외의 표현
가능한 나머지 배열은 쓰지 않는다. 이렇게 만들어진 부호를 BCD(Binary
Coded Decimal, 2진화 10진수)라고
한다. BCD에는 8421부호, 3초과 부호, 2421 부호,
5421 부호, 51111 부호(2진수 5자리) 등이 포함되며 이 중 8421부호가
대표적으로 쓰인다.
8421 부호는 2진수 4자리에
대해 각각 가중치 8, 4, 2, 1을 부여한 것으로써 10진수와의
대응이 기본형 2진수와 동일하다. 10진수 16910을 8421 부호로 변경하면 다음과 같다.
10진수 |
1 |
2 |
7 |
|||||||||
가중치 |
8 |
4 |
2 |
1 |
8 |
4 |
2 |
1 |
8 |
4 |
2 |
1 |
8421 부호 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
10진수를 각 자리마다 2진수 4자리씩
할당하고 가중치를 순서대로 놓아 10진수와 2진수의 합계가
일치하도록 배열한다. 10진수 010부터
910까지에 대해 2진수 00002에서 10012까지만
대응하므로 나머지 10102부터 11112까지에
대해서는 사용하지 않는다.
8421부호와 일반적인 2진수는 자릿수의 차이가 있어 12710과 같이 2진수로 변환할 경우 7자리로 끝나는 수라도 8421부호는 12자리를 할당해 불필요하게 쓰이는 경우가 많으니 감안하여야 한다. 더불어
910와 1010사이에는
6자리가 비어 있으므로 사칙연산 시 주의해야 한다.
3. 아스키
사람이 쓰는 숫자는 2진수에
대응시켜 사용할 수 있으나 컴퓨터에 문자라는 개념이 없으므로 하나의 문자체계 전체를 대응시켜야 단어나 문장표현이 가능하다. 미국에서는 1963년에 로마자(라틴문자)의 대문자와 소문자, 숫자 외에 문장부호 등을 합쳐 2진수 7자리에 대응하도록 부호를 만드는데 이것을 아스키(ASCII: American Standard Code for Information Interchange, 정보
교환용 미국 표준 부호)라고 부른다. 아스키 7자리에 오류검사용 패리티 1자리를 더해 정보전달의 기준으로 될 정도로
전 세계적으로 쓰인다.
아스키 외에 문자를 표현하기 위해 BCD에서 확장한 엡시딕(EBCDIC: Extended Binary Coded Decimal Interchange Code, 확장 2진화 10진법 교환 부호)이란
것도 있으나 8자리 부호로써 불용부호가 더 많으며 사용상의 불편함을 이유로 아스키에 비해 잘 쓰이지
않는다.
아래의 표는 알려진 아스키의 대응표이다. (대응하는 2진수가 표기가 길어 16진수로 대신한다.)
10진 |
16진 |
문자 |
10진 |
16진 |
문자 |
10진 |
16진 |
문자 |
10진 |
16진 |
문자 |
010 |
0016 |
NUL |
3210 |
2016 |
Space |
6410 |
4016 |
@ |
9610 |
6016 |
` |
110 |
0116 |
SOH |
3310 |
2116 |
! |
6510 |
4116 |
A |
9710 |
6116 |
a |
210 |
0216 |
STX |
3410 |
2216 |
“ |
6610 |
4216 |
B |
9810 |
6216 |
b |
310 |
0316 |
ETX |
3510 |
2316 |
# |
6710 |
4316 |
C |
9910 |
6316 |
c |
410 |
0416 |
EOT |
3610 |
2416 |
$ |
6810 |
4416 |
D |
10010 |
6416 |
d |
510 |
0516 |
ENQ |
3710 |
2516 |
% |
6910 |
4516 |
E |
10110 |
6516 |
e |
610 |
0616 |
ACK |
3810 |
2616 |
& |
7010 |
4616 |
F |
10210 |
6616 |
f |
710 |
0716 |
BEL |
3910 |
2716 |
‘ |
7110 |
4716 |
G |
10310 |
6716 |
g |
810 |
0816 |
BS |
4010 |
2816 |
( |
7210 |
4816 |
H |
10410 |
6816 |
h |
910 |
0916 |
TAB |
4110 |
2916 |
) |
7310 |
4916 |
I |
10510 |
6916 |
i |
1010 |
0A16 |
LF |
4210 |
2A16 |
* |
7410 |
4A16 |
J |
10610 |
6A16 |
j |
1110 |
0B16 |
VT |
4310 |
2B16 |
+ |
7510 |
4B16 |
K |
10710 |
6B16 |
k |
1210 |
0C16 |
FF |
4410 |
2C16 |
, |
7610 |
4C16 |
L |
10810 |
6C16 |
l |
1310 |
0D16 |
CR |
4510 |
2D16 |
- |
7710 |
4D16 |
M |
10910 |
6D16 |
m |
1410 |
0E16 |
SO |
4610 |
2E16 |
. |
7810 |
4E16 |
N |
11010 |
6E16 |
n |
1510 |
0F16 |
SI |
4710 |
2F16 |
/ |
7910 |
4F16 |
O |
11110 |
6F16 |
o |
1610 |
1016 |
DLE |
4810 |
3016 |
0 |
8010 |
5016 |
P |
11210 |
7016 |
p |
1710 |
1116 |
DC1 |
4910 |
3116 |
1 |
8110 |
5116 |
Q |
11310 |
7116 |
q |
1810 |
1216 |
DC2 |
5010 |
3216 |
2 |
8210 |
5216 |
R |
11410 |
7216 |
r |
1910 |
1316 |
DC3 |
5110 |
3316 |
3 |
8310 |
5316 |
S |
11510 |
7316 |
s |
2010 |
1416 |
DC4 |
5210 |
3416 |
4 |
8410 |
5416 |
T |
11610 |
7416 |
t |
2110 |
1516 |
NAK |
5310 |
3516 |
5 |
8510 |
5516 |
U |
11710 |
7516 |
u |
2210 |
1616 |
SYN |
5410 |
3616 |
6 |
8610 |
5616 |
V |
11810 |
7616 |
v |
2310 |
1716 |
ETB |
5510 |
3716 |
7 |
8710 |
5716 |
W |
11910 |
7716 |
w |
2410 |
1816 |
CAN |
5610 |
3816 |
8 |
8810 |
5816 |
X |
12010 |
7816 |
x |
2510 |
1916 |
EM |
5710 |
3916 |
9 |
8910 |
5916 |
Y |
12110 |
7916 |
y |
2610 |
1A16 |
SUB |
5810 |
3A16 |
: |
9010 |
5A16 |
Z |
12210 |
7A16 |
z |
2710 |
1B16 |
ESC |
5910 |
3B16 |
; |
9110 |
5B16 |
[ |
12310 |
7B16 |
{ |
2810 |
1C16 |
FS |
6010 |
3C16 |
< |
9210 |
5C16 |
\ |
12410 |
7C16 |
| |
2910 |
1D16 |
GS |
6110 |
3D16 |
= |
9310 |
5D16 |
] |
12510 |
7D16 |
} |
3010 |
1E16 |
RS |
6210 |
3E16 |
> |
9410 |
5E16 |
^ |
12610 |
7E16 |
~ |
3110 |
1F16 |
US |
6310 |
3F16 |
? |
9510 |
5F16 |
_ |
12710 |
7F16 |
DEL |
이 표에서 010 (0016)부터 3110(1F16)까지와 12710(7F16)은 제어문자라고 부르며 실제 글자를 표현하는 부호는 아니다. 이 제어문자를 제외하면 4810(3016)부터 숫자 10개, 6510(4116)부터 대문자 26개, 9710(6116)부터 소문자 26개와 나머지 문장부호들로 구성된다. 이러한 문자와 숫자, 기호를 사용하여 단어와 문장, 숫자표현을 가능하게 한다.
4. 유니코드
아스키가 세계적으로 쓰이면서 각 나라의 글자들도 필요에 따라, 아스키를 기반으로 하고 자릿수를 추가(12810(8016)~)하여
코드에 할당하게 된다. 그러나 독자적으로 만들어진 문자배열을 전 세계적으로 주고받으면 호환될 리가 없다. 이에 따라 1991년에 전 세계의 모든 문자를 취급하는 부호체계를
만들어 발표하는데 그것이 유니코드(Unicode: Unique,
Universal, and Uniform character enCoding, 유일하고 보편적이며 정형화된 문자의 부호화)이다.
이름에서부터 코드의 제작된 목표를 알 수 있는데, 모든 문자 체계를 온전히 표현한다는 것을 목표로 현대의 문자를 포함하여 과거의
문자도 계속 추가되고 있다. 아스키가 2진수 7자리로 128문자라면 유니코드는 2진수
21자리로 대응가능한 부호가 100만 문자를 넘는다. 여기에 현 시대까지 쓰이는 문자를 할당하고도 부호에 여유가 있어서 그림이나 이모티콘, 게임 기호 같은 것들이 추가되기도 한다.
유니코드체계에서 부호의 표기는 U+를 접두어로 16진수 4~6자리로 표기한다. 실제로
쓰이는 예시를 몇 가지 보면 다음과 같다.
U+0020부터 U+007F까지(127문자): Basic Latin (라틴 문자 기본, 아스키와 같은 내용)
U+0250부터 U+02AF까지(96 문자): IPA Extensions(국제 음성 알파벳 확장)
U+0370부터 U+03FF까지(135 문자): Greek(그리스 문자)
U+3131부터 U+318E까지(94 문자): Hangul Compatibility Jamo(한글 호환 자모)
U+AC00부터 U+D7A3까지(11252 문자): Hangul Syllables(한글 음절)
U+1F300부터 U+1F5FF까지(768 문자): Miscellaneous Symbols and Pictographs(기타 기호 및 그림 문자)
U+1F600부터 U+1F64F까지(80 문자): Emoticons(이모티콘)
16진수 4자리로 쓰인 문자들은 기본 다국어 평면(BMP, U+0000~U+FFFF)에 속하는데, 현대에 쓰이는 대부분의 문자가 여기에 해당한다. 이외에 보조 다국어 평면(SMP, 10000~1FFFF), 보조 표의문자 평면(SIP, U+20000~2FFFF), 3차 표의문자 평면(TIP, U+30000~3FFFF) 등이 있는데 보조 다국어는 고대 문자와 같이 잘 쓰이지 않으며 표의문자는 대부분 한자가 부호로 할당되어 있다.
https://www.unicode.org/roadmaps/bmp/index.html에 방문하면 현재 쓰이고 있는 문자들을 모두 확인할 수 있다. 이것으로써 2진수로 배열된 정보를 전달하는 것만으로 전 세계에서 모든 문자를 동일하게 읽고 쓸 수 있게 된다.
5. 결론
부호의 종류만 알아 두고 필요할 때는 인터넷에서 표를 찾아서 쓰도록 한다.
댓글 없음:
댓글 쓰기