비트와 바이트
비트 (bit)
스위치
우리는 스위치를 눌러서 전등을 켜거나 끕니다. 스위치를 켜면 전기가 통하여 전등이 켜지고, 스위치를 끄면 전기가 통하지 않아 전등이 꺼집니다.

아두이노, 라즈베리파이, 컴퓨터 등의 디지털 장치는 다양하고 복잡한 작업을 할 수 있지만, 근본적인 작동 원리는 스위치로 전등을 켜고 끄는 것과 동일합니다. 다만, 아주 많은 스위치를 아주 빠른 속도로 작동하는 차이밖에 없습니다. 오늘날의 컴퓨터 CPU에는 수십억개의 트랜지스터 (스위치) 가 있고 초당 수십억번의 속도로 스위치를 켜거나 끌 수 있습니다.
데이터의 표현
그렇다면, 단순히 스위치를 켜고 끄는 것으로 어떻게 문서를 작성하거나, 인터넷 서핑을 하거나, 동영상을 시청하는 작업이 가능할까요?
컴퓨터는 내부의 스위치가 켜진 상태를 1이라고 하고 꺼진 상태를 0이라고 해석합니다. 그러므로 컴퓨터가 어떠한 데이터를 표현하기 위해서는 0과 1만 사용할 수 있고 이것을 2진수(binary)이라고 부릅니다.
여기서 2진수의 한 자리수 (0 또는 1)을 1 비트 (bit)라고 부릅니다. 예를 들어, 10진수 숫자 3은 2진수로 11 이며 두 자리수 이므로 2비트입니다.
2비트로 표현 가능한 숫자는 아래와 같이 4개 (22) 입니다.
2진수 | 10진수 |
---|---|
00 | 0 |
01 | 1 |
10 | 2 |
11 | 3 |
그러므로 n개의 비트로 표현 가능한 숫자는 2n 개입니다.
이처럼 컴퓨터는 0과 1을 사용하는 2진수로 숫자, 문자 등의 모든 데이터를 표현하며 이러한 데이터를 이용하여 다양하고 복잡한 작업을 할 수 있습니다.
바이트 (byte)
사용하는 이유
앞서 설명한 바와 같이 비트를 이용하여 다양한 데이터를 표현할 수 있지만, 컴퓨터에서는 비트를 데이터 처리의 단위로 사용하지는 않습니다. 데이터에 따라 6비트, 17비트, 196비트 등 크기가 다양하므로 결국 비트를 하나씩 읽기 위해서는 CPU가 데이터의 주소를 1비트 단위로 접근해야 하므로 빈번하게 작동해야하기 때문입니다.
그러나, 작은 숫자를 하나를 처리하는데 CPU가 6번 읽거나 써야 하므로 비효율적입니다.
대신, 컴퓨터는 데이터를 8비트 단위로 묶어서 처리를 하고 이를 1 바이트 (byte) 라고 합니다. 최소 단위를 8비트를 사용하므로 경우에 따라 일부 불필요한 비트가 추가되어 용량의 낭비가 발생하지만, 매우 효율적으로 빠르게 처리할 수 있는 장점이 있습니다.
Hex code
컴퓨터가 처리하는 바이트값을 2진수로 표시할 경우 사람이 읽기가 불편하므로 16진수(hexadecimal)를 사용하여 표시한 값이 Hex code (헥사값)입니다. 2자리의 Hex code로 1 바이트를 표시할 수 있기 때문에 바이트를 효율적으로 표시할 수 있습니다. Hex code의 앞에는 보통 0x 를 붙여 16진수임을 나타냅니다.