정보보안-이론/씹정세

[씹정세] 비트가 머에여? - 컴퓨터에서 정보의 기록

정보에 바다라는 표현에 걸맞게 자료들은 인터넷 세계와 우리들의 컴퓨터에 오늘도 유영중이다. 그런데 정보가 어떻게 표현되고 있길래  정확하게 어떻게 컴퓨터에 저장될 수 있는지 그러니까 그 "정보"라는 게 어떻게 표현되고 처리되는지 궁금하지 않은가? 이를 이해하면 우리의 컴퓨터와 죄 금 더 친해질 수 있을 것이다.

 

지난 씹정세 시간에 우리는 컴퓨터의 발전과 컴퓨터가 어떻게 구성되어 있는지를 알아보았다. 이번 포스팅을 통해서는 컴퓨터에 자료가 저장되는 구조와 그 원리를 알아보도록 하자. 


 

대리님 자료 이메일로 보냈어요! 자료 저장해 주세요!

* [붙임]자료_최종_진짜_최종_긴박_급함_견적서.docx

 

이진법

우리는 사람들과 이야기를 할 때 한국말을 쓰고, 숫자를 표현하기 위해 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 조합을 이용해서 이야기를 한다.(예를 들면 삼백칠십구는 3, 7, 9이다. 이-지하다.) 이를 10개의 문자로 표현하는 "십진법"이라고 한다.

 

그런데 우리 컴퓨터는 이 10개의 문자를 받아들일 수 있는 감수성을 가지고 있지 않다. 무뚝뚝한 우리 컴퓨터는 오로지 전기가 들어오면 1, 들어오지 않으면 0만을 감지한다. 숫자를 두 가지만 쓰기에 이를 "이진법"이라고 한다.

아쉽게도 우리의 컴퓨터는 똑똑한 척을 하는 장비가 맞는 표현 같다. 

 

이진법을 사용하는 방법을 간단하게 알아보자 우선 십진법의 계산을 조금 파고 들 필요가 있어 보인다.(알고 10을 2로 바꾸어 주면 되니까)

위의 식은 우리가 자주 아는 십진수인 379를 분해한 것이다. 일의 자리인 9부터 백의 자리인 3까지 가중치(십)가 제곱으로 증가하며 더해진다. 위처럼 이 진수인 101110을 표현해보자

십진수와 같은 원리로 계산하면 46이다. 쉽지 않은가

 

 

이진수 압축 

위의 379와 101110의 예시를 바라보면 어떤 생각이 드는가? 맞다 이진수는 사람이 읽기에 직관적이지 못하고, 수의 표현이 엄청 길어진다는 특징이 있다. (십진수 123456789는 이진수로 111010110111100110100010101이다.) 

그래서 컴퓨터를 이해할 때 이진수를 사람이 읽기보다 쉽게 2의 제곱수로 압축해서 표현한다.(ex : 4, 8, 16 등 실제로 4진수는 잘 안쓰의고, 32진수도 안 쓰인다. 이유는 뒤에서) 다음은 수의 예시이다.

이진수(binary) : 10('0b1010'), 50('0b110010'), 100('0b1100100'), 표현 가능한 문자가 0과 1밖에 없다.(2 미만)

팔 진수(octet) : 10('0o12'), 50('0o62'), 100('0o144') 표현 가능한 문자는 0~7이다.(8 미만)

십육 진수(hex) : 10('0xa'), 50('0x32'), 100('0x64') 표현 가능한 문자는 0~9 10개와 A(10), B(11), C(12), D(13), E(14), F(15) 

 

진수들 앞에 붙은 0b, 0o, 0x는 뒤에 수가 각각 이진수, 팔 진수, 십육진수임을 표현한다. 십진수로 0d(decimal)이 있긴 한데, 생략한다. 32진수를 안쓰는 이유는 31개의 문자를 배정하면 그게 오히려 직관적이지 못하기 때문이다. 뭐 자료들이 엄청 방대해지면 안쓸건 또 뭐겠냐만은...)

 

위에를 보고 바로 알기는 어렵겠지만, 비트를 3개씩 묶어서 읽으면 팔진수, 4개씩 묶어서 읽으면 십육 진수가 된다.

 

 

자료의 표현

봉화를 알고 있는가? 꺼져있는 상태와 켜져 있는 상태를 보고 불이 켜진 수준에 따라 먼 거리에 정보를 전달하던 아주 오래된 통신방식이다. 봉화도 이진법으로 표현이 가능하다. 아래의 사진을 보자

위의 상황은 봉화가 꺼짐을(0), 봉화가 켜짐을(1)이라고 할 때 010110을 보고 퇴근시간을 파악하는 시나리오이다. 

실제 컴퓨터에 저장되는 자료도 위와 동일한 방법이다. 엄청 많은 0과 1을 나열하고 이를 기억하는 게 컴퓨터에 자료가 저장되는 원리이다. 이해를 위해서 아래의 주소에서 HxD를 다운로드하자

mh-nexus.de/en/hxd/

 

HxD - Freeware Hex Editor and Disk Editor | mh-nexus

HxD - Freeware Hex Editor and Disk Editor HxD is a carefully designed and fast hex editor which, additionally to raw disk editing and modifying of main memory (RAM), handles files of any size. The easy to use interface offers features such as searching and

mh-nexus.de

* HxD는 컴퓨터에 저장된 파일을 십육진 수로 보여주는 훌륭한 도구이다.

 

필자의 컴퓨터에 저장된 그림파일 퇴근. png를 HxD로 열어보겠다.(여러분도 자기 컴퓨터에 저장된 아무 파일이나 가져와 보자)

<퇴근.png>
<HxD로 연 퇴근.png>

위에서 십육 진수 하나는 이진수 4개로 이루어져 있다고 설명했다. 다음의 엄청나게 많은 십육 진수를 확인할 수 있다. 보이는가 컴퓨터에 "정보"는 이런 식으로 저장되어 있는 것이다.


오늘은 씹정세 2번째 시간인 비트와 컴퓨터에 어떤 방식으로 "정보"가 저장되는지 돋보기로 알아보았다.  이 비트를 이야기하더라도 소주까고 날밤으로 이야기할 수 있다. 조금 더 자세한 정보는 앞으로의 포스팅을 기다려 주기를 바라며 오늘의 씹정세는 여기서 매듭짓겠다.