컴퓨터는 2진수(0,1)로 데이터를 표현합니다. 하지만 우리는 평소 10진수를 사용합니다. 컴퓨터는 왜 2진수를 사용하는 걸까요? 결론부터 말씀드리자면, 10진수를 사용 할때보다 2진수를 사용할 때 더 정확한 데이터의 표현이 가능해지기 때문입니다. 이유는 무엇일까요?

 
컴퓨터가 사용하는 0과 1이라는 것은 컴퓨터가 정보를 저장할 때 사용하는 기억소자에 걸린 0V와 5V의 전기신호(전압)을 말하는 것입니다. 0V=0, 5V=1 입니다. 신호가 있거나, 없거나 입니다. 이 기억소자는 어느정도의 잡음 여유를 가지고 있습니다. 가령 3.5V~5V는 1로 인식이 되고 0~ 1.5V는 0으로 인식이 되는 방식입니다. 따라서 0V, 5V 신호를 인가하고, 거기에 노이즈(잡음)나 에러가 어느정도까지 생기더라도 0이 1로 바뀌거나 1이 0으로 바뀌는 일이 잘 일어나지 않습니다. 물론 너무 큰 노이즈는 문제가 되겠지요.

 
5V 전원에 스위치를 통해 연결된 소자는 스위치가 ON되면(닫히면) 5V를 받아 1이 됩니다. 그럼 닫혀 있을때는 어떻게 될까요? 정확히 0이 되면 좋지만 애매하게 2V를 가지면 문제가 생길 수 있습니다. 2진수가 하나만 바뀌어도 전혀 다른 데이터가 될 수 있습니다. 이런 상태를 플로팅(floating) 상태라고 말합니다. 어떤 논리값도 가지지 못한 상태입니다. 플로팅 상태를 방지하기 위해 저항을 통해 소자를 ground(접지)로 연결시켜두면 됩니다. 그럼 스위치가 OFF인 상태에서는 소자가 정확히 0V를 띄게 됩니다. 이를 pull-down(풀다운) 이라고 합니다. 반대로 어떠한 소자를 스위치를 통해 ground에 연결시켜두고 스위치가 ON되면 0으로 만들려 합니다. 이 때는 이 소자를 저항을 통해 5V에 연결시켜두어 inactive 상태일 때 확실하게 1의 상태를 가지도록 하면 됩니다. 이를 pull-up(풀업)이라고 합니다.

 
만약 컴퓨터가 10진수(0~9)를 사용한다면 어떻게 될까요? 0.25V(0V~0.5V)=0, 0.75V(0.5V~1.0V)=1, …., 4.75V(4.5V~5V)=9로 10가지의 다른 상태를 구분할 수 있는 기억소자가 있다고 칩시다. 표현 범위의 마진(margin)이 너무 작아 조금만 노이즈가 생겨도 문제가 됩니다. 즉, 2진수 체계보다 노이즈에 취약한 구조입니다.

즉, 컴퓨터가 2진수를 사용하는 이유는 안정적이고 정확한 데이터 표현을 위해서입니다.

 

데이터를 나타내는 최소 단위를 비트(bit)라고 합니다. 그리고 '래치(latch)'나 '플립플롭(flipflop)'같은 소자들은 1개의 bit를 표현할 수 있습니다. 즉, 래치나 플립플롭은 0 혹은 1을 가지는 2가지 경우가 있습니다. 그렇다면 예를들어 2bit 데이터라고 하면 두 자리의 2진수이기때문에 래치가 2개이고 각 래치마다 0 혹은 1이 되는 2가지 경우가 있습니다. 따라서 00, 01, 10, 11의 2^2=4가지의 서로 다른 상태를 표현할 수가 있습니다. 그렇다면 8bit 데이터라는 것은 8자리 2진수 값인 00000000~11111111의 2^8 = 256가지의 경우를 표현할 수가 있는겁니다. 참고로, 8bit = 1byte입니다. N-bit의 데이터라고 하면 N자리 2진수로서 2^N가지의 서로 다른 상태를 나타낼 수 있는 데이터입니다.

Byte

이러한 컴퓨터의 정보체계를 디지털 이라고 합니다. 이와는 반대되는 개념이 연속적인 아날로그입니다.

그 차이를 설명하기 위해, 예를들어 0~10dB 범위의 소리의 세기를 데이터로 표현한다고 생각해봅시다.

이를 아날로그로 표현한다면 0~10 사이의 연속적인 실수로 나타낼 수 있습니다. 가령 3.58347dB같은 크기도 말이죠.

하지만 디지털로 표현한다면? 0~10dB 범위 소리의 크기를 2bit 시스템으로 나타낸다고 해봅시다. 그렇다면 4가지의 경우로 표현할 수가 있습니다. 그렇다면 0~2.5dB은 모두 00으로 나타냅니다. 즉, 1.1dB이나 2.3dB이나 똑같이 00으로 저장을 해버립니다. 마찬가지로 2.5~5dB=01, 5~7.5dB=10, 7.5~10dB=11로 나타내어 집니다. 하지만 4bit 디지털 시스템으로 0~10dB을 나타낸다고 해보죠. 그렇다면 우리는 이를 2^4 = 16가지의 경우의 수(0000~1111)로 표현할 수 있고, 0~0.625dB 범위의 소리세기는 0000, 0.625~1.3dB은 0001, …., 9.375~10dB은 1111의 4bit 2진수로 나타낼 수 있습니다. 훨씬 작은 오차로 데이터를 정확하게 측정할 수 있게 된겁니다. 더 많은 bit수를 사용할수록 더욱 정밀한 데이터 표현이 가능해집니다.

이처럼 디지털이란 연속적인 물리량이 아닌 각각의 분리된 물리량의 개념입니다.

analogdigital

+ Recent posts