컴퓨터는 수를 계산하는 기계다. 하지만 우리는 컴퓨터로 글도 읽고, 음악도 듣고, 영화도 본다. 수를 계산하는 기계가 어떻게 글, 음악, 영화 같은 다양한 정보를 다룰 수 있는 걸까? 컴퓨터가 데이터를 취급하는 방식을 간단히 살펴보자. 그러면 이 장에서 배우려는 여러 가지 데이터 유형이 왜 필요한지 알 수 있다.

4.1.1 비트와 바이트

컴퓨터가 0과 1만으로 정보를 처리한다는 얘기는 많이 들어 봤을 것이다. 컴퓨터는 어떻게 0과 1을 구별할까? 컴퓨터는 전기 신호를 입력받고 출력한다. 전류의 전압은 낮출 수도 높일 수도 있다. 전압이 낮은 상태를 0으로, 전압이 높은 상태를 1로 약속해서 컴퓨터가 0과 1을 구별한다. 이렇게 둘 중 한 가지 상태를 구별할 수 있는 정보 단위를 비트(bit)라고 한다.

고작 두 가지 수를 구별하는 것으로 무엇을 할 수 있을까하고 생각할 수 있지만, 비트를 여러 개 묶으면 더 큰 수도 구별할 수 있다. 비트가 두 개면 네 가지 수를, 비트가 세 개면 여덟 가지 수, 비트가 네 개면 16가지 수를, 비트가 여덟 개면 256가지 수를 구별할 수 있다.(그림 4-1) 비트 하나하나가 수의 각 자리수를 나타내는 덕분에 적은 개수의 비트로도 큰 수를 만들 수 있다. 이것을 이진법이라고 한다. 비트는 흔히 여덟 개씩 묶어 다루며, 이 여덟 비트 묶음 하나를 바이트(byte)라고 부른다.

그림 4-1 비트 묶음으로 수 나타내기

그림 4-1 비트 묶음으로 수 나타내기

개념 정리

  • 비트: 두 가지 상태를 구별할 수 있는 정보의 단위
  • 바이트: 비트 여덟 개를 묶은 것. 256가지 상태를 구별할 수 있다.

4.1.2 부호화

컴퓨터는 수뿐만 아니라 글, 음악, 영상 같은 다양한 정보를 모두 비트 묶음으로 다룬다. 비트가 나타내는 정보는 이진수이기 때문에, 이런 다양한 정보를 비트로 다루려면 먼저 그 정보를 수로 나타낼 수 있어야 한다. 정보를 수로 표현하는 법은 간단하다. 정보의 특정한 상태를 특정한 수에 대응시키기로 약속하면 된다. 텍스트를 예로 들면, 문자 ‘A’는 수 65에, 문자 ‘B’는 수 66에 대응하는 식으로 약속할 수 있다. 마찬가지로 그림과 영상도 각각의 색에 번호를 붙여 나타내기로 약속한다. 이렇게 정해둔 약속에 따라 정보를 비트로 나타내는 것을 부호화(encoding)라고 한다.

그런데 정보에는 수많은 종류가 있고, 그 종류마다 부호화하는 약속도 다르다. 부호화 방법을 모른 채, 비트만 있다면 그 비트가 나타내는 정보가 무엇인지 올바르게 해석할 수 없다. 65라는 수는 수 65일 수도 있지만, 문자 ‘A’일 수도 있는 것이다. 비트와 함께 그 비트를 해석하고 취급하는 방법이 함께 필요하다.

데이터는 값(value)유형(type)으로 구성된다. 값은 비트로 표현된 정보다. 유형은 그 비트를 취급하는 방법이다. 데이터는 유형이 무엇인가에 따라 가질 수 있는 값과 적용할 수 있는 연산이 다르다. 1과 ‘1’은 각각 수와 텍스트로 서로 유형이 다르다. 수는 사칙연산이 가능하지만 텍스트는 그렇지 않다. 프로그램을 만들 때는 데이터의 값만이 아니라 유형도 고려해야 한다. 그리고 프로그래밍 언어가 제공하는 데이터 유형의 종류와 특징도 잘 알아두어야 한다. 이 장에서 파이썬의 기본 데이터 유형들을 하나씩 배워두어야 할 이유다.

개념 정리

  • 부호화: 일정한 약속에 따라 비트를 나열해 정보를 표현하는 것
  • : 비트로 표현된 정보
  • 유형: 그 비트를 취급하는 방법
  • 데이터는 값과 유형으로 이루어진다.

비트, 부호화라는 개념이 어렵게 느껴진다면…

비트, 부호화 등의 개념이 어렵게 느껴질 수도 있다. 그러나 걱정 말자! 운영 체제, 프로그래밍 언어, 라이브러리가 부호화 처리를 해주기 때문에 여러분이 부호화에 신경써야 할 일은 별로 없다. 데이터의 유형이 중요하다는 것을 이해했다면 충분하다.