이진수 데이터. 디지털 컴퓨터와의 소통 수단
[작성일 : 2021년 6월 10일]
우리가 수에 대해서 배우기 시작할 때 자연스럽게 사용했던 도구는 손가락이었습니다. 손가락이 열 개라 1부터 10까지의 숫자가 자연스러웠고, 손가락을 접었다, 폈다하며 계산 할 수 있었습니다. 이와 같이 10에 기반을 둔 수 체계를 10진수라 합니다. 십진수는 0부터 9까지 10개의 숫자로 구성되어 있습니다. 컴퓨터는 어떨까요? 컴퓨터는 이진수를 사용합니다. 이 포스팅에서는 컴퓨터가 사용하는 이진수에 대해 알아보도록 하겠습니다.
글의 순서
디지털 컴퓨터가 이진수를 표현하는 방법
이진수 데이터 문자
이진수 데이터 색깔
이진수 데이터 소리
이진법을 이용한 연산
디지털 컴퓨터가 이진수를 표현하는 방법
▶ 전기 신호로 표현하는 이진수
컴퓨터는 모든 정보를 0과 1로 처리합니다. 2진수는 오직 0과 1만으로 수를 나타내는 방법입니다. 우리는 손가락이 10개라 10진수가 편한데, 컴퓨터는 손가락이 없습니다. 컴퓨터는 전기 제품이기 때문에 특별한 다른 방법이 필요했습니다. 바로 전류가 흐른다. 흐르지 않는다로 경우의 수를 표현하거나, 전압이 높다, 낮다로 표현하는 것입니다. 보통 전류가 흐른다를 1 또는 전압이 높다를 1로 표현합니다.
▶ 자기력이나 빛으로 표현하는 이진수
컴퓨터에 쓰이는 보조기억장치인 USB 메모리, SSD, 하드디스크의 경우에는 0과 1을 표현하기 위해 자기력이나 빛을 사용합니다.
자기력은 자석의 힘입니다. 자기력을 이용한 기억장치는 N극과 S극을 띠는 물질이 나열되어 있습니다. 이 물질끼리의 경계에서 자력의 방향, 즉 N극과 S극의 방향이 바뀌면 1, 바뀌지 않으면 0으로 대응시키는 방법입니다.
CD나 DVD등과 같이 빛을 이용하는 경우는, 빛을 발산하는 강도와 시간에 따라 0과 1을 구분합니다. 빛을 집중해서 반사하면 1, 빛을 흩어지게 반사하면 0과 같은 식입니다.
이진수 데이터, 문자
▶ ASCII
우리가 사용하는 키보드에는 약 120개 정도의 문자와 기호가 있습니다. 이진수로 120개를 표현하려면 몇 개의 자리수가 필요할까요?
‘64비트 CPU가 한 번에 처리할 수 있는 정보의 양, 엑사바이트’라는 포스팅에서 이진수 1자리가 저장할 수 있는 값이 2개이며, 이진수의 자리수가 늘어날수록 저장할 수 있는 값들은 2의 승수로 증가한다는 것을 발견하였습니다. 따라서 120개 정도의 문자를 이진수로 모두 표현하기 위해서는 7자리의 이진수가 필요합니다. 2의 7승개가 128개이니 말입니다.
7자리의 이진수로 영어 키보드의 문자를 대응시킨 것이 아스키(ASCII, American Standard Code for Information Interchange) 코드입니다. 여기서 문자와 같은 정보에 이진수를 할당하는 것을 코드화한다라고 표현합니다. 아스키 코드는 각 문자나 기호에 이진수가 할당되어 있다는 것을 의미합니다.
아래의 표에 각 문자나 기호에 대응되는 이진수를 나타내었습니다. 가로가 앞부분 세자리, 세로가 뒷부분 네자리를 나타냅니다. 예를 들어, 숫자 1은 아스키코드로 이진수 0110001에 해당합니다.
000 | 001 | 010 | 011 | 100 | 101 | 110 | 111 | |
0000 | NUL | DLE | SP | 0 | @ | P | ` | p |
0001 | SOH | DC1 | ! | 1 | A | Q | a | q |
0010 | STX | DC2 | “ | 2 | B | R | b | r |
0011 | ETX | DC3 | # | 3 | C | S | c | s |
0100 | EOT | DC4 | $ | 4 | D | T | d | t |
0101 | ENQ | NAC | % | 5 | E | U | e | u |
0110 | ACK | SYN | & | 6 | F | V | f | v |
0111 | BEL | ETB | ‘ | 7 | G | W | g | w |
1000 | BS | CAN | ( | 8 | H | X | h | x |
1001 | HT | EM | ) | 9 | I | Y | i | y |
1010 | LF/NL | SUB | * | : | J | Z | j | z |
1011 | VT | ESC | + | ; | K | [ | k | { |
1100 | FF | FS | , | < | L | \ | l | | |
1101 | CR | GS | – | = | M | ] | m | } |
1110 | SO | RS | . | > | N | ^ | n | ~ |
1111 | SI | US | / | ? | O | _ | o | DEL |
▶ 한글
ASCII 코드는 영어 문자를 7자리 이진수에 대응시켜놓은 것입니다. 한글은 어떨까요? 한글의 경우, 자음, 모음, 그리고 자음이 뭉쳐져서 하나의 글자를 만듭니다. 한글 한 글자를 만드는데 이진수 7자리로는 부족했으므로, 16비트로 할당되어 있습니다. 8비트(bit)를 1바이트(byte)라고 합니다. 여기서, 바이트는 문자를 코드화하기 위해 사용하는 비트(bit)의 묶음이라는 개념으로 사용되었습니다. 한글 문자를 코드화하는 데는 2바이트 완성형 코드 또는 2바이트 조합형 코드와 같은 몇가지 다른 방식이 있습니다.
▶ 전 세계의 모든 문자
전 세계의 모든 문자를 코드화 할 수 있도록 유니코드(Unicode)라는 코드체계를 사용하고 있습니다. 전 세계의 모든 문자를 모두 고려해야하는 만큼 이진수 자리수가 더 길어져야 합니다. 각 문자에 할당된 이진수의 자리수가 길어지면, 긴 이진수를 처리하는데 그만큼 많은 시간을 필요로 합니다. 또한 자리수가 길어지는 만큼 데이터를 전송하거나, 수신하는데 시간이 많이 걸린다는 단점이 있습니다.
이진수 데이터, 색깔
컴퓨터에서 사진을 확대한다고 상상해 보시기 바랍니다. 확대하고 확대해서 더 이상 확대할 수 없는 상태까지 가면, 색깔이 다른 정사각형들로 구성되어 있는 것을 발견할 수 있습니다. 이 정사각형을 픽셀(pixel)이라고 합니다. 픽셀의 색깔에 이진수를 할당해 놓았습니다. 다른 말로는 각 픽셀이 코드화되어 있다는 것입니다.
만약 이진수 1자리로 코드화 했다고 하면, 픽셀이 가질 수 있는 색깔은 두 가지입니다. 예를 들면 1은 검은색, 0은 하얀색으로 말입니다. 물론 이진수의 자리수를 늘리면 더 다양한 색깔을 표현할 수 있습니다. 만약 이진수 8자리, 즉 8비트(= 1바이트)로 코드화 했다고 하면, 표현할 수 있는 색깔은 28 = 256개입니다.
이진수 데이터, 소리
컴퓨터로 유튜브 동영상을 보고, 멜론이라는 앱을 띄워 음악을 듣기도 합니다. 눈치채셨겠지만 소리도 이진수로 코드화 되어 있습니다. 소리는 공기라는 매질을 흔드는 파동입니다. 음파(sound wave)라고도 합니다.
소리는 이 음파의 형태에 따라 달라집니다. 어느 특정 시간 간격동안 음파의 주기와 진폭에 대한 표본점을 선정한 후 할당된 이진수를 대응시키는 것입니다. 음파의 진폭에는 보통 이진수 16자리를 할당합니다. 2^16개의 높이를 가진 음파를 구분할 수 있다는 의미입니다.
이진법을 이용한 연산
그렇다면 이진법만을 쓰는 컴퓨터는 우리가 원하는 명령을 어떻게 처리할까요? 명령을 처리하는 곳은 중앙처리장치(CPU, Central Processing Unit)이며, CPU는 0과 1만으로 우리가 명령한 내용을 처리합니다.
중학교 수학시간에 배웠던, 이진법을 이용한 계산 부분을 잠시 가져와보겠습니다. 만약 컴퓨터에게 ‘2+4’를 명령했다고 가정해보겠습니다. 이 명령과 숫자는 이진수로 변환되어 메모리에 올라가며, CPU의 제어장치가 메모리에서 CPU로 이 데이터와 명령을 가져옵니다. 2를 이진수로 바꾸면 10, 4를 이진수로 바꾸면 100이 됩니다. 이제는 이 두 개의 수가 덧셈연산을 통해 110이라는 새로운 수로 바뀝니다. CPU의 제어장치는 이 110을 메모리로 보냅니다. 이진수 110은 출력장치에서 십진수 6으로 변환되어 표시됩니다. 여기서 주목해야 할 것은, 메모리에서 CPU까지의 구간에서는 이진수를 사용한다는 것입니다.
마치며 …
컴퓨터는 0과 1을 이용하여 데이터를 처리합니다. 이 포스팅에서는 디지털 컴퓨터가 사용하는 이진수에 대해 알아보았습니다. 2진수는 오직 0과 1만으로 수를 나타내는 방법입니다.
1과 0을 표현하는 방법으로는 전류가 흘렀다, 끊어졌다로, 또는 전압이 높다, 낮다와 같은 전기신호를 이용하는 방법, 자기력이나 빛을 이용하는 방법을 들 수 있습니다. 이진수로 만들어 낼 수 있는 문자, 색깔, 소리데이터와, 디지털 컴퓨터가 이진수를 이용하여 정보를 처리하는 방법까지 살펴보았습니다.
커피 한잔과 함께 이 포스팅이 디지털 세상에 한 발짝 더 다가가는 계기가 되었길 바랍니다.
연관 포스팅 :
1. 컴퓨터 구성요소의 핵심, CPU (중앙처리장치)
2. 애플 M1 칩, 그리고 컴퓨터 기본 구조
3. 알아두면 좋을 컴퓨터 작동원리. 폰 노이만 아키텍처
4. 64비트 CPU가 한 번에 처리할 수 있는 정보의 양, 엑사바이트
참고자료
[1] [위키백과] ASCII
[2] 카와조에 아이, 이영희 옮김(2020), 누구나 읽을 수 있는 IT과학 이야기 #5 컴퓨터는 어떻게 만들어졌나요?, 로드북