DIY를 위한 AI

2022년 8월 20일 토요일

부호 2 (Code 2)

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진수 169108421 부호로 변경하면 다음과 같다.

 

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자리를 할당해 불필요하게 쓰이는 경우가 많으니 감안하여야 한다. 더불어 9101010사이에는 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. 결론

부호의 종류만 알아 두고 필요할 때는 인터넷에서 표를 찾아서 쓰도록 한다.

댓글 없음:

댓글 쓰기