비트와 바이트
바이트 배열, 비트/바이트 블록, 사용자 정의 통신처럼 이진 데이터를 다룰 때 필요한 기초 지식입니다(8부).
비트
컴퓨터의 CPU 에는 수십억 개의 트랜지스터(스위치)가 있고, 초당 수십억 번 스위치를 켜고 끕니다. 컴퓨터는 스위치가 켜진 상태를 1, 꺼진 상태를 0 으로 해석하므로 모든 데이터를 0 과 1 만으로 표현하며, 이를 2진수(binary)라 합니다. 2진수의 한 자리(0 또는 1)를 1 비트(bit)라고 합니다. 예를 들어 10진수 3 은 2진수로 11 이며 두 자리이므로 2비트입니다.
| 2진수 | 10진수 |
|---|---|
| 00 | 0 |
| 01 | 1 |
| 10 | 2 |
| 11 | 3 |
2비트로 표현할 수 있는 숫자는 위와 같이 4개(2²)이며, n 비트로는 2ⁿ 개의 숫자를 표현할 수 있습니다.
바이트
데이터의 크기는 제각각이므로 CPU 가 비트 단위로 데이터에 접근하면 읽기와 쓰기가 지나치게 잦아집니다. 예를 들어 10진수 37 은 2진수 100101 로 6비트이지만, 이를 비트 단위로 처리하면 여섯 번 읽거나 써야 합니다. 그래서 컴퓨터는 8비트를 묶어 한 단위로 처리하며, 이를 1 바이트(byte)라고 합니다. 37 은 앞에 00 을 붙여 00100101, 즉 8비트(1바이트)로 만들어 한 번에 처리합니다. 일부 비트가 낭비되지만 훨씬 효율적으로 처리할 수 있습니다.
Hex code
바이트 값을 2진수로 표시하면 읽기 어려우므로 16진수(hexadecimal)로 표시하며, 이를 Hex code 라고
합니다. 1바이트는 16진수 두 자리로 표시할 수 있고, 16진수임을 나타내기 위해 앞에 보통
0x 를 붙입니다. 예를 들어 2진수 11111111 은 0xFF 입니다.