본문 바로가기
개발 관련 정보/Tip

컴퓨터 한글 코드 - ASCII Code

by MonoSoft 2023. 5. 2.
728x90
반응형

컴퓨터 한글 코드 - ASCII Code

 

며칠전, 세벌식 자판의 우수성을 객관적으로 생각해보고자,

애국가를 분석한 일이 있었다.

 

결과는 좀더 정리해서 올려보고자 한다.

(다음 세벌식 사랑 모임 까페에 약간의 오류가 있고

정보가 부족해보이는 애국가 분석자료를 HWP로 올려놓았습니다.)

 

분석 도중 애로사항은, '각'이라는 글자가 있다면,

ㄱ+ㅏ+ㄱ 으로 나누어 분석해야 하는데,

600타 가까이 되는 애국가를 일일히 손으로 분석하는데 시간이 걸리며,

이보다 더 긴 글은 손으로 분석하는데 엄두도 내지 못한다는 것이다.

 

명색이 컴퓨터학과 졸업생이니 분석프로그램을 만들어

돌려보면 되지 않을까 생각도 했는데...

 

아뿔사, 한글은 완성형으로 되어있고

이제까지 기껏 아스키(ASCII)코드로 알파벳이나 숫자정도만

끄적거려보던 내게는 한글 코드 자체를 배우지 않는 이상 무리였다.

 

그래서 직접 웹사이트 자료를 찾아다니며 한글코드를 조사했으며,

알게된 현재 표준코드와 실제 쓰이는 몇가지 한글 코드에 대해 정리해서 공개하고자 한다.

 

프로그래밍을 하는 분들이나,

그밖에 궁금했던 분들에게 유용한 정보가 되었으면 하는 바램이다.

 

 

1. ASCII Code (American Standard Code for Information Interchange)

 

한글 코드를 설명하기 전에 먼저, 영문코드를 설명해야 할듯 싶다.

 

현재의 컴퓨터에 가장 기본이 되는 기반인

이 ASCII코드 부터 알아야 코드 매핑에 대한 이해가 쉬워질 듯 하다.

 

원래 컴퓨터가 미국에서 개발되어 발달되었으니 어쩔 수 없는 현실이다.

그러자면 또 컴퓨터의 기본적인 이론부터 설명해야 하려나.

 

컴퓨터가 원래는 0과 1 밖에 표현 못하는 바보라는 것은 알고 있는지.

컴퓨터는 전기로 움직이며,

전기가 흐르는 상태를 0, 흐르지 않는 상태를  1, 혹은 그 반대로 정해서

그것으로 숫자를 표현하기로 했다.

 

이렇게 0 또는 1을 나타내는 장치를 보통 '소자'라고 부르며,

단위는 비트(bit)라고 표현한다.

 

이러한 소자를 두 개를 붙인다면,

그 장치는 최대 4개의 숫자를 표현할 수 있고,

세개라면, 8개의 숫자, 네개라면 16개의 숫자...

 

이렇게, 여러개의 소자를 붙여나감으로서 점차로 기하급수적인 숫자를 표현할 수 있고,

이는 곧 숫자를 표현하는 방법 가운데 하나인 2진법을 의미한다.

 

 

4bit-2진수의 예제

0 : 0000,  4 : 0100,    8 : 1000,  12 : 1100
1 : 0001,  5 : 0101,    9 : 1001,  13 : 1101
2 : 0010,  6 : 0110,  10 : 1010,  14 : 1110
3 : 0011,  7 : 0111,   11 : 1011,  15 : 1111

 

 

이렇게 4비트는 총 16(2의 4제곱)개의 수를 표현 할 수 있다.

이렇게 4비트를 묶어서 하나의 수로 표현하는 것이 컴퓨터에서 많이 쓰이는 16진법이다.

 

 

 

2진수와 16진수

0 : 0000,  4 : 0100,  8 : 1000,  C : 1100
1 : 0001,  5 : 0101,  9 : 1001,  D : 1101
2 : 0010,  6 : 0110,  A : 1010,  E : 1110
3 : 0011,  7 : 0111,   B : 1011,   F : 1111

 

또한 8비트를 묶어서 1Byte라는 단위를 쓰며,

이것이 컴퓨터에서 저장되는 최소의 단위가 된다.

1바이트는 0~FF(255)까지의 256개의 정보를 표현할 수 있다.

 

16비트 컴퓨터니, 64비트 컴퓨터니 하는 것은 

“한번에 처리할 수 있는 비트의 수”를 뜻한다고 하면 이해하기 쉬울듯 하다. 

 

즉, 계산을 할 때 16비트는 65,536(2의 16제곱)의 숫자를 구분 할 수 있다는 뜻이다. 

 

현재의 컴퓨터는 64비트가 쓰이니 

한번에 2의 64제곱인 18,446,744,073,709,551,616의 숫자를 구분하여 

표시할 수 있다는 뜻이 된다. 

 

엄청난 양의 정보다.

 

컴퓨터가 본격적으로 쓰여지기 시작할때는 불과 8비트밖에 되지 않는 정보처리량을 가졌다.

미국에서는 이 중 7비트를 이용하여, 총 128개의 출력 문자신호를 매핑하였으며

이중 표준으로 정해진 것이 ASCII 코드이다.

 

이후에, 사용되지 않던 나머지 1비트를 추가하여 영문에 존재하지 않는

128개의 유럽의 알파벳이나 문자표를 추가하였는데,

이것이 확장 ASCII Code이다.

 

영문 DOS시절 HEX Editor등을 통해 쉽게 들여다 볼 수 있던 코드들이며,

 

현재의 윈도라든지, 리눅스 등에서도 이 코드들이 기반이 되어 움직인다.

(확장 ASCII 코드는 이제 세계적으로 거의 안쓰이지만)

 

ASCII Code에서 처음의 32개는 시스템문자로 쓰이며,

48~57까지는 0 부터 9 까지의 숫자가 배치되어있고

65~90까지 A~Z의 대문자,

97~122까지 a~b의 소문자,

그 외의 영역은 우리가 흔히 볼수 있는 특수 문자들로 채워져있다.

 

만약, 전세계의 사람들 모두가 알파벳만을 쓴다면

이 ASCII 코드만으로도 아무 문제 없이 컴퓨터를 이용할 수 있다.

 

그러나, 동아시아만 보더라도 중국의 漢字가 있고 일본의 かな가 있고

우리나라의 한글이 있다.

문제는 이러한 글들을 컴퓨터에서 어떻게 표현하는가이다.

 

728x90
반응형

댓글