Byte là gì?
Byte là một đơn vị dữ liệu số gồm 8 bit, cùng nhau biểu diễn được 256 giá trị khác nhau, từ 0 đến 255. Trên hầu hết máy tính, byte là đơn vị bộ nhớ nhỏ nhất có địa chỉ riêng, và dung lượng tệp được tính bằng byte.
Cập nhật 24 tháng 9, 2026
- 48H
- 69i
- 20␣
- F0 9F 98 80😀
4 ký tự, 7 byte
Chữ A lưu trên máy tính của bạn là số 65, và số 65 được lưu dưới dạng tám bit: 01000001. Nhóm tám bit đó là một byte. Địa chỉ bộ nhớ đếm theo byte, dung lượng tệp đếm theo byte, và gần như mọi kiểu dữ liệu trong ngôn ngữ lập trình đều dài một số nguyên byte.
Vì sao một byte là 8 bit
Từ "byte" do Werner Buchholz đặt ra năm 1956, khi ông làm việc trên máy tính Stretch của IBM. Ông viết nó với chữ y để không bị đọc nhầm thành "bit". Các máy tính đời đầu dùng những nhóm có kích thước khác nhau, thường là 6 bit, đủ cho chữ in hoa và chữ số nhưng không đủ cho chữ thường.
System/360 của IBM, ra mắt năm 1964, dùng byte 8 bit, và cả ngành theo sau. Tám bit cho 256 giá trị, đủ chỗ cho chữ hoa, chữ thường, chữ số, dấu câu và mã điều khiển. Tám cũng là lũy thừa của hai, nên một byte chia đều thành hai nửa 4 bit, mỗi nửa viết bằng một chữ số thập lục phân. Các chuẩn mạng vẫn dùng từ "octet" khi cần nói chính xác là đúng 8 bit.
Một byte chứa được gì
Một byte có 256 mẫu khả dĩ, từ 00000000 đến 11111111. Chương trình đọc chúng theo vài cách chuẩn:
- như một số không dấu từ 0 đến 255;
- như một số có dấu từ -128 đến 127;
- như một ký tự, chẳng hạn
A(65) hoặc!(33); - như hai chữ số thập lục phân, từ
00đếnFF.
Kiểu bytes của Python là một dãy các giá trị như vậy, và nó từ chối mọi giá trị nằm ngoài khoảng từ 0 đến 255:
b'Hi!'
[72, 105, 33]
01001000 48
ValueError: bytes must be in range(0, 256)
Không phải ký tự nào cũng vừa một byte. UTF-8, bảng mã mà phần lớn web sử dụng, lưu 128 ký tự ASCII mỗi ký tự 1 byte, còn mọi ký tự khác từ 2 đến 4 byte:
A 1 bytes: [65] 41
é 2 bytes: [195, 169] c3a9
€ 3 bytes: [226, 130, 172] e282ac
😀 4 bytes: [240, 159, 152, 128] f09f9880
Đó là lý do độ dài của một chuỗi tính bằng ký tự và kích thước của nó tính bằng byte có thể khác nhau.
Bit và byte
Một bit là một số 0 hoặc 1 duy nhất. Một byte là 8 bit. Hai đơn vị này rất dễ nhầm vì ký hiệu của chúng chỉ khác nhau ở chữ hoa và chữ thường:
| Bit | Byte | |
|---|---|---|
| Là gì | Một chữ số nhị phân | 8 bit |
| Số giá trị khả dĩ | 2 (0 hoặc 1) | 256 (từ 0 đến 255) |
| Ký hiệu | b (chữ thường) | B (chữ hoa) |
| Thường dùng để đo | Tốc độ mạng: Mbps, Gbps | Dung lượng lưu trữ và tệp: KB, MB, GB |
| Ví dụ | Đường truyền 100 Mbps | Một bức ảnh 5 MB |
Để đổi bit sang byte, chia cho 8. Đường truyền 100 Mbps chuyển tối đa 12,5 MB mỗi giây, nên tải một bức ảnh 5 MB qua đó mất ít nhất 0,4 giây.
Kilobyte, megabyte và gigabyte
Các đơn vị lớn hơn có hai hệ, và khoảng chênh giữa chúng là lý do một ổ đĩa mới trông nhỏ hơn trên Windows so với con số ghi trên nhãn.
| Thập phân (SI) | Byte | Nhị phân (IEC) | Byte |
|---|---|---|---|
| kilobyte (kB) | 1.000 | kibibyte (KiB) | 1.024 |
| megabyte (MB) | 1.000.000 | mebibyte (MiB) | 1.048.576 |
| gigabyte (GB) | 1.000.000.000 | gibibyte (GiB) | 1.073.741.824 |
| terabyte (TB) | 1.000.000.000.000 | tebibyte (TiB) | 1.099.511.627.776 |
Các hãng sản xuất ổ đĩa, tốc độ mạng và macOS (từ phiên bản 10.6 năm 2009) dùng đơn vị thập phân. Dung lượng RAM và Windows dùng đơn vị nhị phân, nhưng Windows lại ghi là KB, MB và GB. Năm 1998, IEC đưa ra các tên kibibyte, mebibyte và gibibyte để chấm dứt sự nhầm lẫn, dù nhiều chương trình đến nay vẫn chưa dùng chúng.
1.0 TB (decimal, used on the box)
931.3 GiB (binary, what Windows calls GB)
12.5 MB per second
Không có dung lượng nào bị mất. Ổ đĩa chứa đúng một nghìn tỷ byte như hộp đã hứa; chỉ là Windows chia cho 1.024 ba lần thay vì 1.000.
Byte trong code
Mọi giá trị trong bộ nhớ đều chiếm một số nguyên byte. Trong C, sizeof cho biết con số đó. Theo định nghĩa, char luôn đúng 1 byte, và trên các hệ thống Linux, macOS và Windows 64 bit hiện nay, short là 2 byte, int là 4 và double là 8. Vì thế một mảng gồm 1.000 giá trị int chiếm 4.000 byte.
printf("%zu\n", sizeof(int)); /* prints 4 */
Kiểu byte của Java luôn có dấu, từ -128 đến 127, nên một giá trị như 200 không vừa:
byte b = (byte) 200; // b is -56: the same 8 bits, read as signed
Dữ liệu thô như hình ảnh, tệp nén và gói tin mạng được xử lý dưới dạng mảng byte: bytes và bytearray trong Python, byte[] trong Java, Uint8Array trong JavaScript. Mở một tệp trong Python với chế độ "rb" sẽ cho bạn các byte của nó thay vì văn bản.
Hash và checksum cũng được đo bằng byte. Một bản băm SHA-256 dài 32 byte, vì thế nó in ra thành 64 ký tự thập lục phân, còn checksum CRC32 dài 4 byte. Công cụ tạo hash hiển thị cả hai cho bất kỳ đoạn văn bản nào.
Học tiếp ở đâu
Để hiểu đơn vị nằm bên dưới byte, hãy đọc bit là gì, và để biết byte được dùng để phát hiện tệp hỏng ra sao, đọc checksum là gì. Công cụ chuyển đổi hệ cơ số đổi bất kỳ byte nào giữa thập phân, nhị phân và thập lục phân, còn hướng dẫn kiểu dữ liệu trong C liệt kê kích thước tính bằng byte của mọi kiểu trong C.
Câu hỏi thường gặp
8 bit 11111111 được gọi là gì?
11111111 là một byte có mọi bit bằng 1. Đọc như số không dấu, nó là 255, giá trị lớn nhất một byte chứa được, viết là FF ở hệ thập lục phân. Đọc như byte có dấu theo bù hai, cùng dãy bit đó nghĩa là -1.Vì sao 8 bit bằng 1 byte?
Số tám là một quy ước đã thắng thế, không phải quy luật tự nhiên. System/360 của IBM, ra mắt năm 1964, dùng byte 8 bit, và gần như mọi máy tính từ đó đều theo. Tám bit cho 256 giá trị, đủ cho chữ hoa, chữ thường, chữ số và ký hiệu, và 8 là lũy thừa của hai, giúp phần cứng và phép tính luôn đơn giản.
Vì sao 4 bit được gọi là nibble?
Nibble là nửa byte, và cái tên là một cách chơi chữ: một miếng cắn nhỏ (bite). Bốn bit cho 16 giá trị, đúng bằng một chữ số thập lục phân, nên một byte luôn được viết bằng hai chữ số hex, mỗi chữ số cho một nibble. Từ này đôi khi được viết là nybble.
1 byte có phải là 4 bit không?
Không. Một byte là 8 bit. Bốn bit là nửa byte, gọi là nibble.
Byte và GB, cái nào lớn hơn?
Gigabyte lớn hơn rất nhiều: nó bằng một tỷ byte (1.000.000.000) theo hệ thập phân mà các hãng sản xuất ổ đĩa dùng, hoặc 1.073.741.824 byte theo hệ nhị phân mà Windows dùng. Byte là đơn vị cơ sở, còn kilobyte, megabyte và gigabyte là bội số của nó.
Một byte trông như thế nào?
01000001. Mẫu này là số 65, cũng là mã của chữ A trong ASCII. Lập trình viên thường viết một byte bằng hai chữ số thập lục phân, nên 01000001 thành 41.