sungyup's.

understanding_the_digital_world / 하드웨어 / 1.2 디지털

1.2디지털

디지털의 의미와 디지털화의 원리, 그리고 컴퓨터가 비트를 사용하는 이유

TL;DR

7. 연속과 불연속

컴퓨터가 정보를 표현하는 방식은 아래의 세 가지 기본적인 아이디어에 기반하고 있다.

  1. 컴퓨터는 디지털 처리 장치다. 즉 컴퓨터는 불연속적 덩어리로 입력을 받아서, 불연속적인 값을 갖는 정보를 저장하고 처리하는 장치이다. 디지털 정보는 이산적인 수에 불과하지만, 아날로그 정보는 연속적으로 변하는 값이다.
  2. 컴퓨터는 정보를 비트(bit)로 표현한다. 비트는 이진 숫자(Binary Integer)로, 0 또는 1인 수이다. 컴퓨터 내부의 모든 것은 비트로 표현된다.
  3. 비트는 모여 더 큰 정보를 표현한다. 숫자, 문자, 단어, 소리, 사진, 영화부터 이러한 정보를 처리하는 프로그램을 구성하는 명령어까지 모두 비트가 모여 표현된다.

아날로그와 디지털

아날로그(analog)는 다른 어떤 것이 변함에 따라 연속적으로 변하는 값을 의미한다. 예를 들어, 자동차 핸들은 운전을 할 때 방향을 살짝 바꾸고 싶다면 그만큼 살짝만 돌리면 된다. 즉, 어떤 것이 변화하는 정도에 비례해 다른 것이 부드럽게 이어지며 변한다.

반면 디지털(digial)은 다른 어떤 것이 변할때 불연속적인 단계를 거치며 변하는 값이다. 예를 들어 디지털 시계는 초와 초 사이에 소수점이나 중간 값이 없고 초 단위로 변한다. 시간은 부드럽게 흐르지만 디지털 시계에는 중간 단계가 없고 뚝뚝 초 단위로 끊기는 것이다.

analog and digital
이미지 출처 : #
부드러운 아날로그와 불연속적인 디지털

우리가 사는 세상은 아날로그이기에, 실제로 정확한 것은 아날로그이다.

하지만 컴퓨터 입장에서는 디지털 데이터가 다루기 쉽기 때문에 컴퓨터는 디지털 방식을 사용한다. 디지털 데이터는 기존 출처와 무관하게 다양한 방식으로 저장, 전송, 처리 가능하다. 또, 불필요하거나 중요하지 않은 정보를 버리는 방식으로 압축할 수 있어 네트워크를 통해 전송할 때 효과적이다.

또, 보안과 개인정보 보호를 위해 암호화되고, 다른 데이터와 병합되고, 복사되고, 다양한 장치에 저장될 수 있다. 아날로그 정보는 이와 같은 처리가 아주 어렵거나 때로는 불가능하다.

8. 아날로그 정보를 디지털로 바꾸기

이미지 디지털화

아날로그 카메라는 감광 필름을 사용한다.

  1. 카메라로 찍는 대상(피사체)에서 방출되거나 반사된 빛이 이 필름에 노출되면, 필름의 각 감광 영역마다 서로 다른 색의 빛을 각기 다른 양으로 받아들이며(노출) 이미지가 형성(현상)된다.
  2. 이후 현상된 필름을 바탕으로 종이 위에 최종 이미지를 출력(인화)한다.

디지털 카메라에선, 빛 에너지를 전기 신호로 바꿀 수 있는 광검출 소자를 이용한다.

image censor
이미지 출처 : #
디지털 카메라에서 필름 역할을 하는 이미지 센서. 이미지 센서는 빛을 감지하고 그에 따라 전하를 저장할 수 있는 수많은 광검출 소자들로 이루어져있는데, 이 광검출 소자들을 픽셀이라고도 한다.
  1. 렌즈는 디지털 카메의 이미지 센서에 찍고자 하는 대상에서 나온 빛을 모아준다. 이미지 센서는 빛을 감지하는 수많은 광검출 소자의 배열로 구성되는데, 이 소자들은 picture element라는 뜻의 픽셀(pixel)이라고도 불린다.
  2. 이미지 센서는 색 정보를 측정하기 위해 R, G, B 필터를 장착하고 있고, 그 뒤에 있는 픽셀들은 필터를 거쳐 들어오는 빛의 양에 비례하는 양의 전하를 저장한다. 그렇기에 픽셀의 정보는 픽셀이 담고 있는 적색, 녹색, 청색의 강도를 기록한 것이다.
  3. 이 전하는 아날로그 신호로 기록되지만, 이후 아날로그-디지털 변환을 통해 디지털 수치로 변환된다.

디지털 사진은 이렇게 계산되어 빛의 강도를 나타내는 수를 배열로 만든 것이다. 그렇기에, 광검출 소자가 더 많고 전하를 더 정밀하게 측정할 수 있을수록 디지털 이미지가 보다 현실과 가까워진다.

음향 디지털화

소리란, 소리의 근원(음원)에서 발생한 진동이 공기에 압력 변화를 일으켜 파동의 형태로 전파되어 고막을 진동시키면 신경 활동으로 변환되는데, 뇌가 이것을 소리로 인식하는 것이다.

1870년에 Thomas Edison이 만든 축음기는 기압 변동을 가느다란 홈의 패턴으로 변환하고, 나중에 이 패턴을 이용해 기압 변동을 재현하는 기계였다. 즉, 소리를 홈의 패턴으로 변환하며 '녹음'하고, 패턴을 기압 변동으로 변환하며 '재생'했다.

이 기술은 이후 1940년대에 아날로그 LP로 이어졌다. LP는 시간에 따른 음압의 변화를 패턴으로 새긴 나선형의 홈이 있는 비닐 원판이다. LP가 재생될 때, 바늘은 패턴을 따라가고 그 움직임은 값이 변동하는 전류로 변환된다. 이후 이 전류가 증폭되어 스피커/이어폰처럼 표면을 진동시켜 소리를 만들어 내는 장치를 구동하는데 이용된다.

sound wave
이미지 출처 : #
소리는 시간에 따른 기압의 변동으로 시각화할 수 있다. 위의 그래프에서 y축은 음의 강도나 세기를 나타내고, x축은 시간이다. 초당 지나가는 파도의 개수가 음의 높이, 또는 주파수가 된다.

시간에 따라 변하는 음압의 측정값을 많이 모으면 곡선의 값에 가까운 수치가 된다. 이 일련의 수들이 파형의 디지털 표현이다. 소리를 수들의 배열로 전환하였기에 저장하고, 복사하고, 조작되고, 다른 곳으로 전송할 수 있게 되는 것이다.

이 수들의 배열은 수치에 맞는 전압과 전류 패턴으로 변환하고, 스피커/이어폰을 구동해 소리를 재생할 수 있게 된다.

CD(Compact Disc)는 1982년쯤 등장한 상업적 디지털 음향의 첫 사례였다. LP의 아날로그 홈 대신, CD는 한쪽 면에 긴 나선형 트랙이 있어 여기에 수를 기록한다. 트랙에는 점들이 나 있는데(파여있거나 평평), 이 점들이 파장의 수치를 인코딩하는데 사용된다. 디스크가 회전함에 따라 레이저가 트랙을 비추고 광전 센서가 빛이 반사되는 양의 변화를 감지한다.

CD는 아날로그 오디오 신호를 디지털 데이터로 변환할 때 초당 44,100번 소리의 높낮이(진폭)을 측정한다. 이 개별 측정값들을 샘플(sample)이라고 한다. 샘플은 실제로는 하나가 아닌 두 개(스테레오를 위한 왼쪽/오른쪽 채널)의 진폭 값으로, 각각 65,536(2^16) 단계의 정확도까지 측정된다.

초당 44,100번(= 44.1kHz) 샘플링하는 이유는 나이퀴스트-섀년 샘플링 정리에 의한 것이다. 이 이론에 따르면, 아날로그 신호에 포함된 최고 주파수의 두 배 (이상의) 속도로 샘플링하면 원래 신호를 정확하게 재구성할 수 있다. 인간이 들을 수 있는 최고 주파수는 약 20kHz이기 때문에, 이를 디지털화하기 위해선 최소 40kHz가 필요하기에 약간의 여유분을 두어 44.1kHz로 샘플링한다.

영화 디지털화

영화는 1870년대에 영국인 사진가 Eadweard Muybridge가 정지 영상을 차례대로 빠르게 연속으로 보여줌으로써 사물이 움직이는 것처럼 보이는 착시 현상을 만들면서 시작되었다.

오늘날 영화는 초당 24 프레임(frame)의 비율, TV는 초당 25 또는 30 프레임의 비율로 이미지를 보여주는데, 이는 인간의 눈이 장면을 연속적인 움직임으로 인지할 정도로 충분히 빠른 속도다. 비디오 게임은 일반적으로 초당 60 프레임을 사용한다.

영화는 이미지와 오디오의 결합으로 만들어진다.

텍스트 디지털화

텍스트는 굳이 변환 과정이 필요하지 않다. 단순히 A는 1, B는 2 식으로 합의하기만 하면 숫자로 바꿀 수 있기 때문이다.

실제로 이 방법이 쓰여, A부터 Z가 65부터 90, a부터 zsms 97부터 122, 숫자 0부터 9가 48부터 57 등으로 구성되는 ASCII(American Standard Code for Information Interchange) 코드가 1963년에 표준화되었다.

지역별로 쓰는 문자가 다르기 때문에, 오늘날 세계화가 됨에 따라 텍스트는 유니코드(Unicode)로 표준화되었다. 유니코드에는 15만 개가 넘는 문자가 있고 그 수는 꾸준히 늘고 있다. (2025년, 유니코드 16.0에는 155,063개의 문자가 있다. )

9. 0과 1의 세계

세상에는 오직 10가지 사람들이 존재한다. 이진수를 이해하는 사람들과 그렇지 않은 사람들.

비트

디지털 시스템은 모든 유형의 정보를 숫자 값으로 저장하는데, 이진수를 사용한다. 비트는 디지털 정보를 표현하는 가장 기본적인 숫자로, binary digit(이진 숫자)의 축약어이다.

두 개의 값 중 하나를 선택하는 정보라면 무엇이든 비트 한 개로 인코딩 할 수 있다. 예를 들어 꺼짐에 0, 켜짐에 1을 할당하거나 반대로 할당하고 합의만 하면 된다.

10. 비트 모아 데이터

바이트

모든 최신 컴퓨터의 데이터 처리와 메모리 구성의 기본 단위8비트로, byte라고 부른다. 바이트는 IBM에서 근무하던 컴퓨터 설계자인 Werner Buchholz가 1956년에 만든 단어로, 1byte는 8비트이므로 2^8, 즉 256개(0~255)의 구별되는 값을 인코딩할 수 있다.

바이트 2개는 총 16비트로, 0에서 2^16-1(= 65,535)까지 값을 나타낼 수 있으며, 유니코드 문자 집합에 있는 문자 한 개를 나타낼 수 있다. 예를 들어, 유니코드의 문자 한 개는 각각 2바이트이다.

바이트로 숫자를 표기할 때는 16진수(hexadecimal)를 쓰기도 한다. 예를 들어, 웹페이지의 색상 정보는 R, G, B 각각의 색의 양을 조합한 픽셀들로 표현되는데, 이를 RGB 인코딩이라고 하며 하나의 픽셀은 각 색상 정보당 1바이트를 할애해 총 3바이트를 사용한다.

1바이트는 8비트이므로, 총 256(= 2^8)단계를 표현할 수 있는데, 이진법으로 적으면 8자리나 적어야하기 때문에 최대한 알아보기도 쉽게 이를 16진수(= 2^4) 2자리로 표현하는 것이다. 이 때, 표기는 10진수와 9까지는 같고 10은 A, 11은 B, ...식으로 15를 F로 표현한다. 검은색은 000000이고 흰색은 FFFFFF인데, 각각 RGB가 모두 0일때와 모두 15일 때이다.

16진수는 유니코드 코드표에서도 문자를 식별하고자 할 때 사용한다. 이 때는 하나의 문자가 2바이트이기 때문에 한 문자를 표현하기 위해 4자리의 16진수가 쓰인다. 16진수는 이후 알아볼 이더넷 주소에서도 볼 수 있다.

컴퓨터 관련 얘기에서 '32비트', '64비트'와 같은 문구를 볼 수 있다. 이는 CPU 아키텍처에서 한 번에 처리할 수 있는 데이터의 크기메모리 주소 지정 범위를 의미한다. 컴퓨터는 내부적으로 데이터를 다양한 크기의 덩어리 단위로 조작하는데, 32비트 컴퓨터는 한 번에 32비트의 데이터를 처리하고, 2^32바이트, 즉 약 4GB의 메모리 공간을 주소로 지정할 수 있다. 다시 말해, 최대 4GB의 메모리에 접근 가능한 것이다.

반면, 64비트 아키텍처는 한 번에 64비트의 데이터를 처리하며 이론적으로 2^64 바이트(약 16 엑사바이트)에 달하는 메모리에 접근할 수 있다. 요즘은 대부분의 컴퓨터가 32비트에서 64비트로 이행이 완료되었는데, 실제로 주소할당 문제는 컴퓨터의 역사에서 계속해서 나온 문제였고, 오늘날 64비트 아키텍처를 쓰는 것은 이게 해결책이었기 때문이다. 128비트로 이행이 일어나는건 현재로썬 한참 남은 일처럼 보이긴 한다.

비트와 바이트와 관련된 이야기에서 기억해야할 중요한 사실은, 비트 모음의 의미는 상황에 따라 결정된다는 것이다. 비트 모음은 사진의 일부일 수도, 아스키코드 문자를 저장한 걸수도, 명령어의 일부일수도 있다.

11. 요약

컴퓨터가 이진수를 사용하는 이유는, 물리적인 장치를 만들 때 켜짐과 꺼짐이라는 2가지 상태만 갖도록 하는 것이 10가지 상태를 갖도록 하는것보다 쉽기 때문이다. 폰 노이만은 이 점을 명확히 인식해, 1946년 논문에서 아래와 같이 이야기했다.

우리가 설계한 시스템에서 기억의 기본 단위는 자연스럽게 이진 체계로 맞춰져 있다. 우리가 전하량의 연속적인 변화를 측정하려고 하지 않기 때문이다.