brunch

You can make anything
by writing

C.S.Lewis

by 스캇아빠 May 30. 2024

컴퓨터 데이타

0. 의미가 너무 많으면 의미가 없는 것과 같다.

컴퓨터 용어들을 듣고 말하다 보면, 아무 의미 없이 쓰는 용어들이 있다. 그중 정보라는 단어가 가장 대표적인데, 정보라는 단어는 어떤 말에도 붙일 수 있기 때문이다. 그냥 통신, 분석, 시스템, 보안 같은 단어들 앞에 정보라는 단어를 붙인다고 뜻이 달라지지도 않고 더 구체적이 되지도 않는다. 그리고 데이타란 단어도 그와 비슷하다. 데이타통신, 데이타분석, 데이타시스템, 데이타보안 데이타라는 단어를 붙였다고 붙이기 전보다 더 특별한 뜻이 된 것 같지 않다.


그런데 이상하다. 왜냐하면, 데이타란 단어는 꽤 구체적인 객체를 지칭하기 때문이다. 데이타의 흐름과 저장위치, 접근권한에 따라, 프로그래밍이 완전히 달라지기도 하고, 프로그램을 유지하는데 드는 비용도 달라지기 때문이다. 데이타는 프로그램이 돌아가는 중에도 필요하고, 프로그래밍이 끝난 후에도 필요하다. 사실상 컴퓨터 프로그램은 모든 것이 데이타의 흐름이다. 그래서 모든 컴퓨터 동작에는 데이타라는 말을 붙일 수 있고, 데이타는 그냥 없어도 말이 되고, 있어도 특별히 의미가 더해지지 않는다.


그래서 데이타에 대한 공부를 하겠다는 것은 모든 것에 대한 공부를 하겠다는 같은 말과 같다. 그런 의미에서 우리 이번 단락은 뭔가 배우겠다는 것보다는 그냥 재미로 보도록 하자


1. 0과 1이 만든 세상

컴퓨터에 대한 이야기를 하다 보면, 매번 나오는 이야기가 있다. 컴퓨터는 0과 1이 만든 세상이다 라는 이야기다. 있는 것과 없는 것, 앞면과 뒷면, 손등과 손바닥, 검정과 흰색 뿐이다. 라는 말이다. 사실 이건 꽤 의미 있는 말인데, 컴퓨터는 사실 꽤 잘 만들어진 것이 아니라, 매우 단순한 기초로 만들어졌다는 말이기 때문이다. 다른 물리학처럼 뭐가 회전을 하네, 입자네 파동이네, 원자가 몇 개네 원소가 뭐네 이런 복잡한 게 아니라, 그냥 우리가 이해하는 가장 단순한 방식으로 존재한다는 뜻이다. 0과 1을 이해하기 위해 우리는 뭔가를 공부할 필요도 없다.


그리고 그 0과 1이 만든 세상에는 몇 가지 단위가 있다.

비트 : 0 또는 1이 되는 단위다. 만약 손등과 손바닥이라고 하면 손 한 개가 1비트다. 앞면과 뒷면이면, 동전 한 개가 비트다.

바이트 : 비트가 8개가 모여져 만든 것이다. 0000 0000 부터 1111 1111 까지 2의 8승 만큼 다양한 값이 존재할 수 있다. (1 또는 0 이기 때문에 2이고 그게 8개니까 2x2x2x2 x 2x2x2x2 , 2의8승 이다)

KB : 킬로바이트, 바이트가 1024개 있는 것 , 흔히 k 니까 1000개 있을 줄 아는데 컴퓨터에서는 1024개이다

MB : 메가바이트, 킬로바이트가 1024개 있는 것

GB : 기가바이트, 메가바이트가 1024

TB : 테라바이트, 기가바이트가 1024


하지만 결국, 기가바이트든, 테라바이트이든 모두 0과 1의 연속일 뿐이다.


2. 0과 1로 이해할 수 있는 정보를

앞전에 데이타를 설명했을 때 데이타에도 타입이 필요하다고 했다. 대표적으로 숫자데이타가 있고, 문자데이타가 있다고 했다. 그럼 왜 이런 타입이 필요할까?


2.1. 숫자

0과 1로 된 데이터를 숫자로 만드는 것은 정말 쉽다. 1 은 1, 10은 2, 100은 4이다. 그런데, 앞에서부터 읽는다면 어디서부터 어디까지 읽어야 하는 건가? 1이라고 읽었는데 뒤에 0이 왔다고 2라고 읽어야 하는 건가? 아니 0이 하나 더 있으니까 4라고 읽어야 하는 건가?


그래서 우리는 데이타를 읽는 방법을 약속했다. 숫자는 4바이트, (때로는 8바이트 숫자도 있다. 긴 숫자) 그래서 제일처음에 나오는 1은 4바이트에서 제일처음 나오는 비트의 값이다. 다시 말해  1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx 에 해당하는 1이다. 그리고 그다음에 0과 0 이 나오면,  100xxxxx 가 되는 것이고 말이다.


4바이트 숫자에서 가장 큰 수 2의 32승 (1바이트는 8, 거기에 4바이트니까 32) 인 4,294,967,296 이다. 그래서 우리는 0부터 42억 넘는 숫자를 표현할 수 있다. 그런데 거기서 하나 더, 우리는 좀 더 유용하게 쓸 수 있도록 음수도 표현하기로 했고 그래서 반값인 마이너스 21억부터 양수 21억까지 표현할 수 있다(-2,147,483,647 ~ 2,147,483,647)


2.2 문자

0과 1을 이용하면 우리는 꽤 많은 정보를 표현할 수 있게 되었다. 그런데, 문자는 어떠한가? 사실 초기에 컴퓨터 문자는 알파벳만 필요했기 때문에 4바이트가 다 필요하지 않았다. 아니 사실 1바이트, 8비트가 다 필요하지도 않아서, 7비트만으로 만들어진 ASCII 테이블이란 것을 만들어 서로 약속했다. 7비트 테이블은 첫 번째 비트는 무조건 0이고 나머지 각 숫자들에 문자를 약속한 거다. 예를 들어 0100 0001 은 "A",  0111 1110 은 "~" 이다.


하지만, 이것도 나중에  영어알파벳만이 아니라, 여러 나라의 말이 존재하게 되었고, 그것을 하나로 묶은 표준(약속)들을 캐릭터 셋(또는 인코딩)이라고 한다, 우리가 많이 쓰는 UTF-8을 기준으로 하면, 한 글자를 표현하기 위해 1바이트가 아닌 4바이트 까지 사용하게 된다.


2.3. 기타

기타 정말 무수히 많은 여러 가지 데이타 형태가 있다. 날짜도 있고, 시간도 있고, 앞에서 말한 집합형도 있고, 그림도 있고, 그림 중에서도 PNG가 있고 JPG가 있고, DOC형식이 있고, XLS형식이 있다. MP3형태의 소리도 있고 WAV형태의 소리도 있다. 하지만, 우리는 여기서 그 형태들을 다 다루지 않는다. (나도 당연히 다 모르지!)


2.4. 혼용

그럼, 데이타 0100 0001, 0100 0001, 0100 0001, 0100 0001 은 무슨 뜻일까? 문자라면 AAAA 가 되지만, 4바이트 숫자라면 1,094,795,585 라는 값이 된다. 과연 어떤 값이 맞는 값일까? 그 데이타를 만든 사람은 어떤 정보를 전달해 주고 싶었던 걸까? 그래서 우리는 데이타의 타입이란 것을 데이타와 같이 보낸다. 각 언어별로, 때로는 플랫폼 별로 약속이 다르기도 하고, 길이가 다르기도 하다. 하지만 데이타를 만든 자와 쓰는 자가 모두 같은 규격을 쓰고 있다면, 서로 문제없이 소통할 수 있을 것이다.


3. 데이타는 물과 같다.

물 1리터와 물 1리터가 만나면 물 2리터가 된다. 물과 물이 모여서 모래가 되지 않는다. 데이타란 말도 마찬가지다. 숫자형 데이타와 문자형 데이타가 만나도 데이타가 되고, 그 데이타가 모여서 또 데이타가 된다. 어디서부터 어디는 데이타이고 어디서부터는 데이타가 아닐 수 없다. DOC데이터 안에는 숫자데이터도 있고 문자데이터도 있고, 사진데이터도 있고, 소리 데이터도 있다. 우리가 말하는 데이터는 그렇게 여러 종류의 데이타를 뭉퉁그려서 이야기하는 것일 수도 있고, 자세하게 한 개의 데이타를 이야기하는 것일 수 있다.


3.1. 데이타의 활용 (자료구조)

데이타를 이용할 때, 어떻게 해야 가장 효과적으로 접근할 수 있을까? 도서관에서 책을 정리하는 방법을 생각해 보자. 장르별로 나눌 수도 있고, 작가별로 나눌 수도 있고, 책 출판일 별로 나눌 수도 있다. 어떤 것이 제일 좋을까?


데이타도 마찬가지다. 데이타를 정리하는 방법은 정말 여러 가지가 있고, 그 사용방법에 따라 리소스(네트워크속도,프로세싱속도 등등)의 제한에 따라 정말 다양한 방법으로 정리해 둘 수 있다. 우리는 그것을 자료구조라고 부른다.


그리고 그 데이타들도 다같이 데이타가 된다. 때로 우리는 이것을 메타 데이타라고 부른다




이전 04화 감히, 알고리즘
brunch book
$magazine.title

현재 글은 이 브런치북에
소속되어 있습니다.

작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari