Byte

**Byte** (đọc là *bai*) là một đơn vị lưu trữ dữ liệu cho máy tính, bất kể loại dữ liệu đang được lưu trữ. Nó cũng là một trong những kiểu dữ liệu (*data type*) trong nhiều ngôn ngữ lập trình.

## Ý nghĩa

Chữ "byte" có một số nghĩa, đều liên quan đến nhau:

# Một dãy số liền nhau của một số bit cố định. Trong đại đa số các máy tính hiện đại, byte có 8 bit (octet). Tuy nhiên, không phải máy nào đều cũng dùng byte có 8 bit. Một số máy tính đời cũ đã dùng 6, 7, hay 9 bit trong một byte - một thí dụ là trong cấu trúc 36 bit của bộ máy PDP-10. Một ví dụ khác là đơn vị slab của bộ máy NCR-315. Một byte luôn luôn không chia rời được, nó là đơn vị nhỏ nhất có thể truy nhập được. Một byte 8 bit có thể biểu thị được 256 giá trị khác nhau (28 = 256) -- đủ để lưu trữ một số nguyên không dấu từ 0 đến 255, hay một số có dấu từ -128 đến 127, hay một ký tự dùng mã 7 bit (như ASCII) hay 8 bit.
# Một dãy bit tạo thành một "sub-field" của một dãy số dài hơn được gọi là "word". Một số máy tính cho phép truy nhập byte có độ dài tùy ý. Trong các câu lệnh assembly LDB và DPB của bộ máy PDP-10, còn tồn tại dưới dạng phép tính từng byte trong Lisp Phổ thông; và byte 6 bit của bộ máy IBM 1401.
# Một *[[kiểu dữ liệu]]* hay một từ đồng nghĩa cho một kiểu dữ liệu trong một số ngôn ngữ lập trình. Trong C, byte được định nghĩa là một đơn vị có thể chứa được bất cứ một ký tự nào trong môi trường hoạt động (điều khoản 3.5 trong tiêu chuẩn C). Vì kiểu dữ liệu số nguyên `char` có thể lưu trữ ít nhất 8 bit (điều khoản 5.2.4.2.1), một byte trong C có thể giữ được ít nhất 256 giá trị khác nhau (`char` không phân biệt có dấu hay không có dấu). Kiểu dữ liệu nguyên thủy `byte` trong Java được định nghĩa có 8 bit và là một kiểu dữ liệu có dấu, có thể lưu giá trị tự -128 đến 127.

## Nguồn gốc tên
Thuật ngữ *byte* được Werner Buchholz đặt ra trong năm 1956 trong giai đoạn thiết kế ban đầu cho hệ thống IBM 7030. Thoạt tiên nó được mô tả là 1 đến 6 bit; các thiết bị I/O thời đó dùng đơn vị 6 bit. Cuối năm 1956, một byte đã được đổi thành 8 bit, và độ lớn này đã được phổ thông hóa trong hệ thống System/360. Từ này được đặt ra bằng cách đổi cách viết chữ *bite* (cắn, một lối chơi chữ với chữ *bit* - miếng) để nó khỏi bị viết sai thành bit.

## Các tên khác

Byte 8 bit còn thường được gọi là **[[octet]]** (bộ tám) trong ngữ cảnh chính thức như các tài liệu tiêu chuẩn, hay trong mạng máy tính và viễn thông. Từ này cũng được sử dụng trong thuật ngữ của một số ngôn ngữ không phải tiếng Anh khi lối chơi chữ *bite* không có nghĩa.

Một nửa byte 8 bit (4 bit) đôi khi còn được gọi là nibble (*gặm*). Nibble còn được gọi là semioctet (*nửa octet*) trong ngữ cảnh mạng máy tính và viễn thông cũng như bởi một số tổ chức tiêu chuẩn.

Cụm 32 bit được gọi là một **word**. Cụm tương ứng 64bit gọi là **double word**.

Một số được biểu diễn 8 bit: 10011001 (với bit đầu tiên là msb (*most significant bit*: bit có trọng số cao nhất), bit cuối cùng là lsb (*least significant bit*: bit có trọng số thấp nhất).

## Viết tắt

"Byte" thường được viết tắt là "B", và "megabyte" được viết tắt là "MB".

 là viết tắt của bit, ví dụ như 10b được hiểu là 10 bits,10mb được hiểu là 10 Megabits.

Do đó cần phần biệt giữa bit .

Một số nước nói tiếng Pháp đôi khi dùng "o" cho "octet". Việc này không chấp nhận được trong SI vì nó có thể nhầm lẫn với số 0.

## Tên cho các đơn vị lớn hơn
*Lưu ý*: các tên "kilobyte", "megabyte", "gigabyte", v.v. có thể được dùng cho các tiền tố SI hay nhị phân. Xin xem Tiền tố nhị phân để biết thêm chi tiết.

## Xem thêm
* Bit
*Octet
* Word

## Tham khảo

## Liên kết ngoài
* nybble tại dictionary.com