컴퓨터 사이언스 (Computer Science)
컴퓨터를 다루기 위한 기초적인 배경 지식 1. 비트
전기에는 양성자(+), 전자(-)가 존재합니다.
- 우리가 사용하는 컴퓨터는 전자(-)만 사용합니다.

물탱크를 예시로 들어보겠습니다.
물탱크에서 물을 목적지까지 전달하기 위해서는 호스를 연결해야 합니다.
호스는 관이 넓은 호스, 좁은 호스 등 다양하게 존재하고, 관이 넓으면 물이 많이 흐를 수 있고 좁으면 물이 적게 흐르게 됩니다.
물탱크의 호스 연결 위치에 따라 물의 흐름의 속도도 달라집니다.
수압이 세지면 물이 더욱 빠르게 흐르게 되겠죠.
이 물탱크를 전기의 방면에서 다시 보게 되면,
물의 흐름은 전자가 흐르는 것과 동일합니다. 전자의 흐름을 전류라고 합니다.
전류가 많아지면 흐르는 전자의 양이 많아지게 됩니다.
수압을 세게 하는 것은 전류의 압력을 높이는 것과 동일합니다. 전류의 압력을 전압이라고 합니다.
전압이 높으면 전류가 더욱 빠른 속도로 움직이게 됩니다.
관의 크기에 따라 물의 흐름이 달라지죠. 이를 전기에서는 전류를 방해하는 저항이라고 합니다.
저항이 많을 수록 전압이 높아지게 됩니다. 호스 입구를 좁히면 물이 세게 나가는 것과 똑같습니다.
- 전압을 높이기 위해선?
- 저항을 추가합니다.
- 전류의 양을 늘립니다.
- V = IR ( 옴의 법칙 )

A와 B 사이에서 정보를 주고받는 것을 통신이라고 합니다.
통신을 할 때에는 데이터를 주고 받아야 합니다.
컴퓨터는 디지털 신호를 통해 정보를 주고받습니다.
하지만 우리가 일상적으로 사용하는 신호는 아날로그 신호이기에,
컴퓨터는 아날로그 신호를 디지털 신호로 변환해야 합니다.

아날로그 신호는 연속적인 신호입니다. 반면 디지털 신호는 이진 신호로, 0과 1로 구분된 신호입니다.
연속적인 신호는 특정 범위 안에 무한 개의 신호 값이 존재한다는 뜻이기에, 아날로그 신호 전체를 디지털 신호로 그대로 변환할 수 없습니다.
이로 인해, 데이터를 효율적으로 전달하기 위해서 아날로그 신호에서 임계점(threshold)을 지정하여, 임계점 위의 값을 1, 아래의 값을 0으로 구분하고 디지털 신호로 변환하게 됩니다. 이를 양자화(quantization)라고 합니다.
양자화를 진행할 때에는 값을 특정 기준에 맞추어 끊어주는 과정이 필요합니다. 보통 특정 주기에 따라 구분하며, 이를 샘플링(sampling)이라고 합니다.
아날로그 신호를 디지털 신호로 변환할 때에는 양자화와 샘플링이 동시에 진행됩니다.
A와 B는 통신을 진행할 때에 수신하는 데이터에 따른 행동을 약속하게 됩니다.
이때 A와 B의 관계에 따라 약속의 명칭이 달라지는데,
- A와 B가 동등한 관계일 때에는 협의해서 정하는 약속인 프로토콜 (Protocol)
- A와 B의 관계가 동등하지 않을 때에는 명령 형식의 약속인 인터페이스 (Interface)
라고 합니다.

비트는 결국 0과 1의 정보를 담고 있는, 데이터의 아주 작은 단위를 나타냅니다.
예를 들어, 빈 박스 안에 0과 1의 정보가 담길 수 있다고 생각합시다.
비트는 이 0과 1을 담을 수 있는 빈 박스라고 보면 되는거죠.
빈 박스가 여러 개일 수록, 0과 1로 나타낼 수 있는 경우의 수는 더욱 늘어나게 됩니다.

박스의 개수가 늘어날 수록 경우의 수가 늘어나고, 이는 즉 프로토콜의 개수가 늘어나게 됩니다.
프로토콜의 개수가 늘어나면 더욱 다양한 약속이 가능하겠죠.
즉 더욱 다양한 약속을 하기 위해서는 비트의 수가 늘어나야 합니다.
선풍기를 예시로 들어보겠습니다.

선풍기 안의 기계에 1비트만 들어가게 되면, ON/OFF 기능밖에 넣을 수 없겠죠.
하지만 기계에 2비트, 3비트 등 다수의 비트가 들어가면 정지, 미풍, 약풍, 강풍 등 여러 기능을 추가할 수 있습니다.
2비트가 들어가면 4가지의 일, 3비트가 들어가면 8가지의 일을 할 수 있는 것이죠.
단, 비트의 통신은 한계가 존재합니다.
비트가 늘어나면 경우의 수가 늘어나지만, 이 경우의 수는 무한대로 증가할 수 있기에 비트를 무한으로 늘리고, 이를 프로토콜로써 모두 정의할 수 없습니다.

이를 해결하기 위해, 사람들은 문자를 전송하기로 약속합니다.
문자를 전송하게 되면 사람이 내용을 직접 해석할 수 있으므로, 프로토콜도 필요 없겠죠.
그래서 문자를 전송하기 위한 코드 표를 작성하게 되는데, 이를 아스키 코드(ASCII CODE)라고 합니다.
ㅤ | 구분 | 개수 |
a ~ Z | 대/소문자 | 56 |
숫자 | 0 ~ 9 | 10 |
특수문자 | 공백, !, @, # 등 | 33 |
제어문자 | 통신에 사용 | 33 |
합계 | ㅤ | 128 |
아스키 코드에 포함된 문자의 개수는 총 128개로, 이는 7비트로 나타낼 수 있습니다.
Q1. 왜 아스키 코드에는 영문만 있나요?
- 아스키 코드는 미국 ANSI에서 표준화한 부호체계로, 영미권에서 발전했기 때문에 영어만 존재합니다.
Q2. 그렇다면 한글, 한자, 다른 외국어는 어떻게 표현하나요?
- 다른 언어의 경우 경우의 수가 더욱 많은 유니코드(Unicode)를 사용합니다. 유니코드는 한 글자가 2Byte(=16 bit)로 정의되어 있습니다.
즉, 컴퓨터를 통해 영어 1글자를 전송하기 위해서 7비트를 사용하게 됩니다.
그러면 사람들과 통신을 하기 위해서는 7비트를 표준으로 사용하면 되겠다고 생각할 수 있습니다.
하지만, 컴퓨터는 8비트를 표준으로 사용하게 되는데, 이는 데이터의 손실을 확인하기 위함입니다.
실제로 데이터를 전송할 때, 거리가 멀거나 저항의 영향을 받아 전압이 낮아질 수 있습니다.
기준치를 사용해 0과 1을 구분하는데, 전압이 낮아지면 분명 1을 전송했는데 수신측에서는 0을 받게 되는 상황도 생기게 되겠죠.
이런 현상을 데이터 손실이라고 하며, 이 데이터 손실을 막기 위해 도입하게 된 방식이 바로
패리티 비트(Parity bit) 입니다.

패리티 비트는 정보가 제대로 전달되었는지 확인하기 위해 데이터의 끝에 1비트를 추가해서
전송하는 비트로, 홀수 패리티 비트와 짝수 패리티 비트로 나뉘게 됩니다.
홀수 패리티 비트 : 데이터 + 패리티 비트의 1의 개수가 홀수
- 데이터의 1의 개수가 홀수면 0, 짝수면 1
짝수 패리티 비트 : 데이터 + 패리티 비트의 1의 개수가 짝수
- 데이터의 1의 개수가 홀수면 1, 짝수면 0
홀수 패리티 비트와 짝수 패리티 비트는 데이터의 종류에 따라 달라질 수 있습니다.
오류 검출을 위한 비트를 더욱 추가하면 잘못된 데이터를 수정할 수도 있지만 데이터의 양도 함께 늘어나게 되기에, 최소한의 정보만으로 데이터 검출을 할 수 있는 1비트만을 추가해서, 컴퓨터는 8비트를 문자의 최소 단위로 설정하고 있습니다. 이를 1바이트(1Byte) 라고 합니다.
패리티 비트 외에도 오류를 검출하는 방법이 존재합니다. 대표적인 방법은 전송받은 비트에 추가 비트를 더함으로써 정보가 일치하는지 확인하는 체크섬(checksum)이 있습니다.
하지만 추가 비트를 함께 전송하면 데이터의 용량이 많아지므로, 송신자에게 재전송을 요청하는 방법 또한 존재합니다.
즉, 우리가 사용하는 컴퓨터는 바이트 통신을 기본으로 하며, 1바이트는 문자 1개를 나타냅니다.
내용 정리
- 비트는 0과 1을 나타낼 수 있는 단위이며, 1비트는 2개의 경우의 수를 가진다.
- 통신에는 최대 8개의 비트를 사용하며, 256(2의 8승)개의 경우의 수를 가진다. 8비트는 1바이트와 동일하며, 1바이트는 문자 1개를 나타낸다.
- 통신을 할 때 기본적으로 바이트 통신을 하며, 이는 문자 통신과 동일하다.
Share article