Menu
Coddy logo textTech

바이트란 무엇인가요?

바이트(byte)는 8비트로 이루어진 디지털 데이터 단위로, 0부터 255까지 256가지 값을 나타낼 수 있습니다. 대부분의 컴퓨터에서 자기 주소를 가지는 가장 작은 메모리 단위이며, 파일 크기는 바이트로 셉니다.

글쓴이: Kevin Spektor, 공동 창업자, CTO

업데이트: 2026년 9월 24일

128
64
32
16
8
4
2
1
10진수65
Hex41
ASCII 문자A
  • 48H
  • 69i
  • 20␣
  • F0 9F 98 80😀

4글자, 7바이트

컴퓨터에 저장된 글자 A는 숫자 65이고, 숫자 65는 여덟 개의 비트 01000001로 저장돼요. 이 여덟 개짜리 묶음이 바이트예요. 메모리 주소도 바이트를 세고, 파일 크기도 바이트를 세며, 프로그래밍 언어의 거의 모든 데이터 타입은 길이가 바이트의 정수배예요.

왜 1바이트는 8비트인가요

"바이트"라는 단어는 1956년 IBM의 Stretch 컴퓨터를 개발하던 베르너 부흐홀츠(Werner Buchholz)가 만들었어요. "bit"로 잘못 읽히지 않도록 y를 넣어 byte로 썼어요. 초기 컴퓨터는 여러 크기의 묶음을 썼는데, 흔히 6비트였어요. 대문자와 숫자에는 충분했지만 소문자까지는 담을 수 없었어요.

1964년에 나온 IBM System/360이 8비트 바이트를 썼고, 나머지 업계가 이를 따랐어요. 8비트는 256가지 값을 주므로 대문자와 소문자, 숫자, 구두점, 제어 코드를 담을 공간이 돼요. 8은 2의 거듭제곱이기도 해서 바이트는 4비트짜리 절반 두 개로 딱 나뉘고, 각 절반은 16진수 한 자리로 써요. 네트워크 표준에서는 정확히 8비트라는 것을 분명히 해야 할 때 지금도 "옥텟(octet)"이라고 써요.

1바이트에 담을 수 있는 것

바이트에는 00000000부터 11111111까지 256가지 패턴이 있어요. 프로그램은 이를 몇 가지 표준 방식으로 읽어요.

  • 0부터 255까지의 부호 없는 수로;
  • -128부터 127까지의 부호 있는 수로;
  • A(65)나 !(33) 같은 문자 하나로;
  • 00부터 FF까지의 16진수 두 자리로.

Python의 bytes 타입은 이런 값들의 시퀀스이며, 0부터 255 범위를 벗어나는 값은 받아들이지 않아요.

b'Hi!'
[72, 105, 33]
01001000 48
ValueError: bytes must be in range(0, 256)

모든 문자가 1바이트에 들어가지는 않아요. 웹 대부분이 쓰는 인코딩인 UTF-8은 128개의 ASCII 문자를 각각 1바이트에, 나머지는 2바이트에서 4바이트에 저장해요.

A 1 bytes: [65] 41
é 2 bytes: [195, 169] c3a9
€ 3 bytes: [226, 130, 172] e282ac
😀 4 bytes: [240, 159, 152, 128] f09f9880

그래서 문자열의 글자 수와 바이트 크기가 다를 수 있어요.

비트와 바이트의 차이

비트는 하나의 0 또는 1이에요. 바이트는 8비트예요. 두 단위는 기호가 대소문자만 다르기 때문에 헷갈리기 쉬워요.

비트바이트
정의이진 숫자 하나8비트
가능한 값2개(0 또는 1)256개(0부터 255)
기호b(소문자)B(대문자)
주로 측정하는 것네트워크 속도: Mbps, Gbps저장 공간과 파일 크기: KB, MB, GB
예시100 Mbps 인터넷 연결5 MB 사진

비트를 바이트로 바꾸려면 8로 나눠요. 100 Mbps 연결은 최대 초당 12.5 MB를 전송하므로, 5 MB 사진을 받는 데 적어도 0.4초가 걸려요.

킬로바이트, 메가바이트, 기가바이트

더 큰 단위에는 두 가지 체계가 있고, 둘 사이의 차이 때문에 새 드라이브가 Windows에서 라벨보다 작게 보예요.

10진(SI)바이트2진(IEC)바이트
킬로바이트(kB)1,000키비바이트(KiB)1,024
메가바이트(MB)1,000,000메비바이트(MiB)1,048,576
기가바이트(GB)1,000,000,000기비바이트(GiB)1,073,741,824
테라바이트(TB)1,000,000,000,000테비바이트(TiB)1,099,511,627,776

드라이브 제조사, 네트워크 속도, macOS(2009년 10.6 버전부터)는 10진 단위를 써요. RAM 용량과 Windows는 2진 단위를 쓰지만, Windows는 이를 KB, MB, GB로 표시해요. IEC는 이 혼란을 끝내려고 1998년에 키비바이트, 메비바이트, 기비바이트라는 이름을 도입했지만, 아직 많은 프로그램이 이 이름을 쓰지 않아요.

1.0 TB (decimal, used on the box)
931.3 GiB (binary, what Windows calls GB)
12.5 MB per second

사라진 공간은 없어요. 드라이브에는 상자에 적힌 대로 1조 바이트가 들어 있어요. Windows가 1,000 대신 1,024로 세 번 나눌 뿐이에요.

코드 속의 바이트

메모리의 모든 값은 바이트의 정수배만큼 공간을 차지해요. C에서는 sizeof가 그 수를 알려 줘요. char는 정의상 정확히 1바이트이고, 현재의 64비트 Linux, macOS, Windows 시스템에서 short는 2바이트, int는 4바이트, double은 8바이트예요. 따라서 int 값 1,000개짜리 배열은 4,000바이트를 차지해요.

printf("%zu\n", sizeof(int));   /* prints 4 */

Java의 byte 타입은 항상 부호가 있어서 -128부터 127까지이므로, 200 같은 값은 들어가지 않아요.

byte b = (byte) 200;   // b is -56: the same 8 bits, read as signed

이미지, 압축 파일, 네트워크 패킷 같은 원시 데이터는 바이트 배열로 다뤄요. Python에서는 bytes와 bytearray, Java에서는 byte[], JavaScript에서는 Uint8Array예요. Python에서 "rb" 모드로 파일을 열면 텍스트 대신 그 파일의 바이트를 얻어요.

해시와 체크섬도 바이트로 크기를 재요. SHA-256 다이제스트는 32바이트여서 16진수 64자로 출력되고, CRC32 체크섬은 4바이트예요. 해시 생성기는 어떤 텍스트든 두 값을 모두 보여 줘요.

다음 단계

바이트 아래의 단위에 대해서는 비트란 무엇인지를, 손상된 파일을 감지하는 데 바이트가 어떻게 쓰이는지는 체크섬이란 무엇인지를 읽어 보세요. 진법 변환기는 어떤 바이트든 10진수, 2진수, 16진수로 바꿔 주고, C 데이터 타입 가이드에는 C의 모든 타입의 크기가 바이트 단위로 정리되어 있어요.

자주 묻는 질문

8비트 11111111은 무엇이라고 부르나요?
비트 여덟 개는 1바이트이고, 11111111은 모든 비트가 1인 바이트예요. 부호 없는 수로 읽으면 바이트가 담을 수 있는 가장 큰 값인 255이며, 16진수로는 FF로 써요. 2의 보수를 쓰는 부호 있는 바이트로 읽으면 같은 비트가 -1을 뜻해요.
왜 8비트가 1바이트인가요?
8은 자연법칙이 아니라 살아남은 관례예요. 1964년에 나온 IBM System/360이 8비트 바이트를 썼고, 그 뒤 거의 모든 컴퓨터가 이를 따랐어요. 8비트는 256가지 값을 주므로 대문자와 소문자, 숫자, 기호를 담기에 충분하고, 8은 2의 거듭제곱이라서 하드웨어와 산술이 단순해져요.
4비트를 왜 니블(nibble)이라고 부르나요?
니블은 바이트의 절반이고, 이름은 말장난이에요. byte와 발음이 같은 bite(한 입)보다 작은 nibble(조금씩 깨물기)이라는 뜻이죠. 4비트는 16가지 값, 정확히 16진수 한 자리를 나타내므로 바이트는 항상 니블마다 한 자리씩 16진수 두 자리로 써요. nybble이라고 쓰기도 해요.
1바이트는 4비트인가요?
아니요. 1바이트는 8비트예요. 4비트는 바이트의 절반이며 니블이라고 불러요.
바이트와 GB 중 어느 쪽이 더 큰가요?
기가바이트가 훨씬 커요. 드라이브 제조사가 쓰는 10진 체계에서는 10억 바이트(1,000,000,000)이고, Windows가 쓰는 2진 체계에서는 1,073,741,824바이트예요. 바이트가 기본 단위이고 킬로바이트, 메가바이트, 기가바이트는 그 배수예요.
1바이트는 실제로 어떻게 생겼나요?
1바이트는 01000001처럼 0과 1 여덟 개가 늘어선 거예요. 이 패턴은 숫자 65이고, ASCII에서 글자 A의 코드이기도 해요. 프로그래머는 보통 바이트를 16진수 두 자리로 적으므로 01000001은 41이 돼요.
Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기