Máy tính, dù thế nào đi nữa, không thể hiểu từ ngữ và số theo cách con người làm. Dù phần mềm hiện đại đã giúp người dùng cuối bỏ qua điều này, thực tế là ở mức thấp nhất, mọi thứ trong máy tính đều được biểu thị bằng tín hiệu điện nhị phân – nguyên tắc chỉ hoạt động trên hai trạng thái: mở hoặc đóng. Để máy tính hiểu được dữ liệu phức tạp, nó cần mã hóa nó thành ngôn ngữ nhị phân. Vậy “số nhị phân” trong máy tính là gì? Tại sao lại chỉ dùng số 0 và 1 trong tin học? Và ứng dụng hệ thống mã nhị phân Binary là gì?
Hệ nhị phân là gì?
Theo Wikipedia, “Hệ nhị phân (hay hệ đếm cơ số hai) là một hệ đếm dùng hai ký tự để biểu đạt một giá trị số, bằng tổng số các lũy thừa của 2”. Như vậy, hệ nhị phân (hay còn gọi là hệ đếm nhị phân) chỉ sử dụng 2 chữ số thay vì 10 chữ số như hệ thập phân, và hai chữ số này thường là 0 và 1. Tên gọi của nó đã nói lên điều này: “nhị” có nghĩa là 2, còn “thập” có nghĩa là 10.
Cách đếm trong nhị phân
Trong hệ nhị phân, giá trị của chữ số đầu tiên là 1 trong hệ thập phân. Chữ số thứ hai có giá trị 2, chữ số thứ ba có giá trị 4, chữ số thứ tư có giá trị 8, và cứ như vậy tiếp tục – mỗi lần nhân đôi giá trị. Khi cộng tất cả, bạn sẽ có số trong hệ thập phân. Vì vậy,
1111 (ở dạng nhị phân) = 8 + 4 + 2 + 1 = 15 (ở dạng thập phân)
Phần hardware của chúng ta được giới hạn trong việc đếm đến 0, điều này cung cấp cho chúng ta 16 giá trị được tạo bởi bốn bit nhị phân. Mở rộng lên 8 bit và bạn sẽ có 256 giá trị khả thi. Điều này chiếm nhiều không gian hơn để biểu thị, vì bốn chữ số thập phân có thể biểu thị được 10.000 giá trị khác nhau. Có vẻ như chúng ta gặp phải nhiều rắc rối như vậy chỉ để làm cho hệ thống đếm gọn gàng hơn, nhưng máy tính hiểu nhị phân tốt hơn so với hệ thập phân. Tất nhiên, nhị phân chiếm nhiều không gian hơn, nhưng chúng ta bị giới hạn bởi phần cứng. Và đối với một số ứng dụng, chẳng hạn như xử lý logic, nhị phân lại tốt hơn hệ thập phân.
Một hệ thống đếm cơ sở khác cũng được sử dụng trong lập trình: hệ thập lục phân. Mặc dù máy tính không chạy trên hệ thập lục phân, nhưng các lập trình viên sử dụng nó để biểu thị các địa chỉ nhị phân theo định dạng dễ đọc khi viết mã. Điều này bởi vì hai chữ số thập lục phân có thể biểu thị một byte hoàn chỉnh, tám chữ số nhị phân. Hệ thập lục phân sử dụng các số từ 0 đến 9 như hệ thập phân và bổ sung chữ cái từ A đến F để biểu thị sáu chữ số phụ.
Vậy tại sao máy tính ưu tiên sử dụng nhị phân?
Câu trả lời ngắn gọn là vì lý thuyết phần cứng và định luật vật lý. Mỗi số trong máy tính của bạn là một tín hiệu điện, và từng đến từng chỉ số của nó là khá khó kim soát và đo đạt. Nhưng đúng vậy, có ý nghĩa hơn khi chỉ phân biệt giữa một trạng thái “mở” và một trạng thái “đóng” – được biểu thị bằng các điện tích âm và dương tương ứng. Đối với những ai không chắc chắn về lý do tại sao đồng hồ ngoài trời được biểu thị bằng điện tích dương, đó là vì các điện tử mang điện tích âm – nhiều electron hơn có nghĩa là nhiều lượng điện cấp cho một điện tích âm. Vì vậy, máy tính cỡ phòng ban đầu đã sử dụng hệ nhị phân để xây dựng hệ thống của họ, và mặc dù phần cứng đã cũ và cồng kềnh hơn rất nhiều, nguyên tắc cơ bản vẫn được giữ nguyên. Máy tính hiện đại sử dụng các thành phần trung gian gọi là bóng bán dẫn để thực hiện tính toán với hệ nhị phân. Dưới đây là một sơ đồ của bộ điều khiển trường bán dẫn (FET):
Cơ bản, nó chỉ cho phép dòng điện chạy từ nguồn điện đến đất nếu có dòng điện được cấp vào cổng. Điều này tạo thành một công tắc nhị phân. Công nghệ bán dẫn giúp chúng ta có thể tạo ra các bóng bán dẫn cực kỳ nhỏ – chỉ khoảng 5 nanomet – có kích thước chỉ bằng hai sợi DNA. Đó là cách các CPU hiện đại hoạt động và thậm chí chúng có thể gặp phải các vấn đề khác biệt giữa trạng thái bật và tắt (mặc dù điều này chủ yếu liên quan đến kích thước phân tử thực tế của chúng, chịu sự tác động lạ của cơ học lượng tử).
Nhưng tại sao chỉ có hệ số cơ số 2?
Vậy bạn có thể tự hỏi, tại sao chỉ có 0 và 1? Tại sao không thêm một chữ số nữa? Trong khi một số người có ý kiến riêng, thì việc thêm một chữ số khác có nghĩa là chúng ta phải phân biệt giữa các cấp độ hiện tại khác nhau – không chỉ bật và tắt. Tuy nhiên, như cũng có những gì nhận thấy về cách máy tính được thiết kế, việc thêm một chữ số khác có nghĩa là chúng ta phải có cách thực hiện phép tính với nhiều cấp độ dễ dàng hơn và phần cứng không thể thay thế được cho máy tính nhị phân. Điều này thực tế là tồn tại; nó được gọi là máy tính đa cấp, và đã xuất hiện từ những năm 1950, nhưng phát triển của nó đã dừng lại khá nhiều. Logic nhị phân đơn giản hơn logic đa cấp, nhưng cho đến nay, không ai có một giải pháp thay thế hiệu quả cho bóng bán dẫn nhị phân, hoặc ít nhất là không có dự án nào được tiến hành để phát triển chúng ở cùng một quy mô nhỏ như đối với nhị phân.
Lý do chúng ta không thể sử dụng logic đa cấp bắt nguồn từ cách các bán dẫn được xếp chồng lên nhau trong một máy tính – điều này được gọi là Cổng Logic – và cách chúng được sử dụng để thực hiện toán học. Cổng Logic có hai đầu vào, thực hiện thao tác trên chúng và trả về một đầu ra.
Điều này dẫn chúng ta đến câu trả lời dài dòng: toán học nhị phân đơn giản hơn cho máy tính so với bất kỳ hệ thống nào khác. Logic Boolean dễ dàng ánh xạ đến các hệ thống nhị phân, với True và False được biểu thị bằng cách bật và tắt. Các cổng Logic trong máy tính của bạn hoạt động dựa trên logic Boolean: chúng lấy hai đầu vào và thực hiện các thao tác như AND, OR, XOR, vv. Hai đầu vào dễ quản lý. Nếu bạn vẽ biểu đồ cho các câu trả lời của mỗi đầu vào, bạn sẽ nhận được một bảng chân lý:
Bảng chân lý nhị phân hoạt động dựa trên logic Boolean sẽ có bốn đầu ra khả thi cho mỗi phép toán cơ bản. Nhưng vì cổng logic đa cấp có ba đầu vào, bảng chân lý sẽ có 9 hoặc nhiều hơn. Trong khi một hệ thống nhị phân có thể có 16 phép toán (2 ^ 2 ^ 2), hệ thống đa cấp sẽ có 19.683 (3 ^ 3 ^ 3). Mở rộng lên quy mô lớn hơn trở thành một vấn đề bởi vì trong khi hệ thống đa cấp hiệu quả hơn, nó cũng phức tạp hơn theo cấp số nhân.
Ai biết? Trong tương lai, chúng ta có thể thấy máy tính đa cấp trở thành hiện thực, khi chúng ta đẩy giới hạn của nhị phân xuống mức phân tử. Tuy nhiên, hiện tại, thế giới vẫn tiếp tục chạy trên hệ nhị phân.