openplanning

Lịch sử của bit và byte trong khoa học máy tính

  1. Bit
  2. Byte

1. Bit

Tôi bắt đầu câu chuyện bằng cách nói về hệ cơ số 10, khi bạn hiểu về hệ cơ số 10 câu chuyện của chúng ta sẽ không bị ngắt quãng và không bị khó hiểu.
OK, hệ cơ số 10 là một hệ cơ số phổ biến nhất hiện nay, nhưng nó không phải là duy nhất, có nhiều nền văn hóa sử dụng các hệ cơ số khác nhau trong quá khứ, tuy nhiên ngày nay hầu hết đã chuyển sang hệ cơ số 10. Hệ cơ số 10 sử dụng 10 con số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, chúng được ghép lại với nhau để tạo ra một con số khác.
Nếu bạn chỉ có một ô, bạn chỉ có thể viết được một số từ 0 đến 9. Nhưng ..
  • Nếu bạn có 2 ô, bạn có thể viết được 1 số có phạm vi từ 0 đến 99.
  • Nếu bạn có 3 ô, bạn có thể viết được 1 số có phạm vi từ 0 đến 999.
Các ô từ phải sang trái đều có một thừa số, chúng lần lượt là 10^0, 10^1, 10^2, ...
BIT
BIT là một từ viết tắt của Binary digIT (Một đơn vị thông tin). Một bit chỉ giá trị 0 hoặc 1, nó được gọi là một đơn vị nhỏ nhất trong máy tính. 0, 1 là hai con số cơ bản của hệ cơ số 2.
Hãy suy luận như hệ cơ số 10 và áp dụng nó cho hệ cơ số 2, nếu bạn có 1 ô, bạn có thể viết được 2 con số 0 và 1. Nếu bạn có 2 ô số bạn có thể viết được 4 con số 00, 01, 10, và 11 (Chú ý: Đừng nhầm, các con số này đều là các con số của hệ số 2 đấy).
Với hệ cơ số 2, các ô từ phải sang trái đều có một thừa số, chúng lần lượt là 2^0, 2^1, 2^2, ...
Hình dưới đây mô tả cách đổi một số trong hệ cơ số 2 sang hệ cơ số 10.
Như vậy:
  • Nếu bạn có 2 ô trong hệ cơ số 2, bạn viết được số lớn nhất là 11(2), nó tương đương với số 3 trong hệ cơ số 10.
  • Nếu bạn có 3 ô trong hệ cơ số 2, bạn viết được số lớn nhất là 111(2), nó tương đương với số 7 trong hệ cơ số 10.
Và bạn có bảng sau:
Số ô
Số lớn nhất (Hệ cơ số 2)
Quy đổi sang hệ cơ số 10
1
1
1 (2^1 - 1)
2
11
3 (2^2 - 1)
3
111
7 (2^3 - 1)
4
1111
15 (2^4 - 1)
5
11111
31 (2^5 - 1)
6
111111
63 (2^6 - 1)
7
1111111
127 (2^7 - 1)
8
11111111
255 (2^8 - 1)
9
111111111
511 (2^9 - 1)
Tại sao máy tính sử dụng hệ cơ số 2, mà không phải là hệ cơ số 10?
Tới đây, chắc chắn bạn sẽ đặt ra câu hỏi "Tại sao máy tính sử dụng hệ cơ số 2? Tại sao lại không phải là hệ cơ số 10?". Trước kia tôi cũng đặt ra câu hỏi này, y như bạn vậy.
Máy tính hoạt động bằng cách sử dụng hàng triệu thiết bị chuyển mạch điện tử (electronic switches) (transistors), mỗi transistor đều bật hoặc tắt (tương tự như công tắc đèn, nhưng nhỏ hơn nhiều). Trạng thái chuyển đổi (hoặc bật hoặc tắt) có thể biểu diễn thông tin nhị phân, chẳng hạn như có hoặc không, đúng hay sai, 1 hoặc 0. Đơn vị cơ bản của thông tin trong máy tính là số nhị phân (binary digit). Mặc dù các máy tính có thể đại diện cho một sự đa dạng đáng kinh ngạc của thông tin, tất cả các biểu diễn cuối cùng phải được giảm xuống thành trạng thái ON/OFF (bật/tắt) của bóng bán dẫn (transistor).
Như vậy câu trả lời là máy tính không có nhiều trạng thái để lưu trữ thông tin, vì vậy nó lưu trữ thông tin dựa trên 2 trạng thái ON OFF (Tương ứng là 1 và 0).
Cái ổ cứng máy tính của bạn cũng lưu trữ dữ liệu dựa trên nguyên lý 0, 1. Ổ cứng máy tính bao gồm các đầu ghi và các đầu đọc, nó có một hoặc nhiều đĩa, các đĩa này được phủ lên một lớp từ niken (magnetic layer of nikel), các hạt từ (magnetic particle) có thể có hướng Nam-bắc hoặc Bắc-nam, đó là 2 trạng thái của hạt từ, và nó tương ứng với 0 và 1.
Đầu đọc của ổ cứng có thể nhận biết được hướng của từng hạt từ để chuyển đổi nó thành các tín hiệu 0 hoặc 1.
Dữ liệu cần lưu trữ vào ổ cứng là một dòng các tín hiệu 0 hoặc 1. Đầu ghi của ổ cứng dựa vào tín hiệu này và làm thay đổi hướng của từng hạt từ cho phù hợp. Đây chính là nguyên tắc lưu trữ dữ liệu của ổ cứng.

2. Byte

Byte là một đơn vị của máy tính, nó tương đương với 8 bit. Như vậy một byte có thể biểu diễn một số trong phạm vi từ 0 đến 255.
Tại sao 1 byte = 8 bit?
Câu hỏi của bạn lúc này là "Tại sao 1 byte = 8 bit, sao không phải là 10 bit?".
Thời gian đầu của thời đại máy tính người ta đã sử dụng baudot như một đơn vị cơ bản, nó tương đương với 5 bit, nghĩa là có thể biểu diễn được các con số từ 0 đến 31. Nếu mỗi con số đại diện cho một ký tự thì 32 là đủ dùng cho các ký tự chữ hoa A, B, ... Z, và một vài ký tự nữa, nó không đủ cho tất cả các ký tự chữ thường.
Ngay sau đó, một vài máy tính sử dụng 6 bit để biểu diễn các ký tự, và nó có thể biểu diễn tối đa 64 ký tự. Nó đủ dùng cho A, B, .. Z, a, b.. Z, 0, 1, 2, .. 9. Nhưng không đủ cho các ký tự khác như +,-,*, / và các ký tự khoảng trắng. Vậy là 6 bit nhanh chóng trở lên hạn chế.
ASCII đã định nghĩa một tập ký tự 7-bit (7-bit character set). Đó là "đủ tốt" cho rất nhiều việc sử dụng trong một thời gian dài, và đã hình thành cơ sở của hầu hết các bộ ký tự mới nhất là (ISO 646, ISO 8859, Unicode, ISO 10646, v..v)
Bảng ASCII:
8-bit, nhiều hơn một chút so với 7-bit sẽ là tốt hơn, nó không gây ra sự lãng phí quá lớn. 8-bit là tập các số từ 0 đến 255 và nó làm hài lòng các nhà thiết kế máy tính, khái niệm byte ra đời, 1 byte = 8 bit.
Với 8-bit, các nhà thiết kế có thể định nghĩa thêm các ký tự khác, bao gồm các ký tự đặc biệt của máy tính. Bảng mã ANSI ra đời là sự thừa kế từ bảng mã ASCII:
Bảng ANSI:
Hiện nay có nhiều bảng mã ký tự (character sets) ra đời nhằm mục đích mã hóa các ký tự trong các ngôn ngữ khác nhau. Ví dụ chữ Trung Quốc, chữ Nhật đều đòi hỏi rất nhiều ký tự, trong trường hợp này người ta sử dụng 2 byte, hoặc 4 byte để định nghĩa một ký tự.

Java cơ bản

Show More