Hệ nhị phân

Lịch sử

Hệ nhị phân được nhà toán học cổ người Ấn Độ Pingala phác thảo từ thế kỷ thứ ba trước Công Nguyên.
Một bộ trọn 8 hình bát quái với 64 hình sao sáu cạnh, tương đồng với 3 bit và 6 bit trong hệ số nhị phân, đã được ghi lại trong điển tịch cổ Kinh Dịch.
Nhiều tổ hợp nhị phân tương tự cũng được tìm thấy trong hệ thống bói toán truyền thống của châu Phi, ví dụ như Ifá, và trong môn bói đất của phương Tây.
Tổ hợp thứ tự của những hình sao sáu cạnh trong Kinh Dịch, đại diện cho một dãy số nguyên thập phân từ 0 đến 63, cùng với một công thức để sinh tạo dãy số ấy, đã được học giả và nhà triết học người Trung Hoa tên là Thiệu Ung (邵雍), thế kỷ 11, thiết lập. Dầu vậy, không có ghi chép nào để lại, thể hiện bằng chứng là Thiệu Ung thông hiểu cách tính toán, dùng hệ nhị phân.
Trong thế kỷ 17, nhà triết học người Đức tên là Gottfried Leibniz đã ghi chép lại một cách trọn vẹn hệ thống nhị phân trong bài viết "Giải thích về toán thuật trong hệ nhị phân" (Explication de l'Arithmétique Binaire). Hệ thống số mà Leibniz dùng chỉ bao gồm số 0 và số 1, tương đồng với hệ số nhị phân đương đại.
Năm 1854, nhà toán học người Anh, George Boole đã cho xuất bản một bài viết chi tiết về một hệ thống lôgic mà sau này được biết là đại số Boole, đánh dấu một bước ngoặt trong lịch sử toán học. Hệ thống lôgic của ông đã trở thành nền tảng trong việc kiến tạo hệ nhị phân, đặc biệt trong việc thực thi hệ thống này trên bảng điện tử.
Vào năm 1937, nhà toán học và kỹ sư điện tử người Mỹ, Claude Elwood Shannon, viết một luận án cử nhân tại MIT, trình bày phương thức kiến tạo hệ thống đại số Boole và số học nhị phân dùng các rơ-le và công tắc lần đầu tiên trong lịch sử. Bài viết với đầu đề "Bản phân tích tượng hình của mạch điện dùng rơ-le và công tắc" (A Symbolic Analysis of Relay and Switching Circuits). Bản luận án của ông đã được chứng minh là có tính khả thi trong việc thiết kế mạch điện kỹ thuật số.
Tháng 11 năm 1937, ông George Stibitz, lúc đó đang làm việc tại Bell Labs, hoàn thành việc thiết kế một máy tính dùng các rơ-le và đặt tên cho nó là "Mô hình K" (Model K) - chữ K ở đây là chữ cái đầu tiên của từ kitchen trong tiếng Anh, nghĩa là "nhà bếp", nơi ông lắp ráp máy tính của mình. Máy tính của ông có thể tính toán dùng phép tính cộng của hệ nhị phân. Cơ quan Bell Labs vì thế đã ra lệnh và cho phép một chương trình nghiên cứu tổng thể được thi hành vào cuối năm 1938 dưới sự chỉ đạo của ông Stibitz. Máy tính số phức hợp (Complex Number Computer) của họ, được hoàn thành vào ngày 8 tháng 1 năm 1940, có thể giải trình số phức hợp. Trong một cuộc luận chứng tại hội nghị của Hội Toán học Mỹ (American Mathematical Society), được tổ chức tại Dartmouth College vào ngày 11 tháng 9 năm 1940, ông Stibitz đã có thể truyền lệnh cho Máy tính số phức hợp từ xa, thông qua đường dây điện thoại, bằng một máy điện báo đánh chữ (teletype). Đây là máy tính đầu tiên được sử dụng với phương pháp điều khiển từ xa dùng đường dây điện thoại. Một số thành viên tham gia hội nghị và được chứng kiến cuộc thuyết trình bao gồm John von Neumann, John Mauchly và Norbert Wiener, đã viết lại sự kiện này trong hồi ký của mình.

Các phép tính dùng hệ nhị phân

Phép tính dùng trong hệ nhị phân cũng tương tự như các phép tính được áp dụng trong các hệ khác. Tính cộng, tính trừ, tính nhân và tính chia cũng có thể được áp dụng với các giá trị số nhị phân.

Tính chia

Tính chia nhị phân cũng tương tự như phép chia trong hệ thập phân.
__________
1 1 0 1 1 |1 0 1
Ở đây ta có số bị chia là 11011₂, hoặc 27 trong số thập phân, số chia là 101₂, hoặc 5 trong số thập phân. Cách làm tương tự với cách làm trong số thập phân. Ở đây ta lấy 3 số đầu của số bị chia 110₂ để chia với số chia, tức là 101₂, được 1, viết lên trên hàng kẻ. Kết quả này được nhân với số chia, và tích số được trừ với 3 số đầu của số bị chia. Số tiếp theo là một con số 1 được hạ xuống để tạo nên một dãy số có ba con số, tương tự với số lượng các con số của số chia:
  1
  __________
  1 1 0 1 1 | 1 0 1
 − 1 0 1
  -----
  0 0 1
Quy luật trên được lặp lại với những hàng số mới, tiếp tục cho đến khi tất cả các con số trong số bị chia đã được dùng hết:
  1 0 1
  __________
  1 1 0 1 1 | 1 0 1
 − 1 0 1
  -----
  0 0 1 1
  − 0 0 0
    -----
     1 1 1
    − 1 0 1
       -----
       1 0
Phân số của 11011₂ chia cho 101₂ là 101₂, như liệt kê phía trên đường kẻ, trong khi số dư còn lại được viết ở hàng cuối là 10₂. Trong hệ thập phân, 27 chia cho 5 được 5, dư 2.

Phép toán thao tác bit trong hệ nhị phân

Mặc dù không liên quan trực tiếp đến sự nhận dạng của các ký tự trong hệ nhị phân, song các dãy số nhị phân có thể được thao tác dùng những toán tử trong lôgic Boole. Khi một dãy số trong hệ nhị phân được thao tác dùng các toán tử này, chúng ta gọi nó là Phép toán thao tác bit. Những thao tác dùng các toán tử AND (tương tự với tác động của chữ "và" trong lôgic, cả hai đơn vị so sánh phải là 1 thì mới cho kết quả 1), OR (tương tự với tác động của chữ "hoặc" trong lôgic, một trong hai đơn vị so sánh là 1 thì cho kết quả là 1), và XOR (nếu 2 bit được so sánh mà khác nhau thì kết quả bằng 1, giống nhau thì bằng 0) có thể được thi hành với từng cặp bit tương đồng trong một cặp số của hai số nhị phân. Thao tác của toán tử lôgic NOT (phép đổi ngược, 0 thành 1 và ngược lại) có thể được thi hành trên từng bit một trong một con số nhị phân. Đôi khi, những phép thao tác này được dùng làm những phương pháp cắt ngắn (làm nhanh) trong các thao tác số học, đồng thời chúng cũng cung cấp những lợi ích khác trong việc xử lý máy tính. Lấy ví dụ, loại bỏ bit cuối cùng (bên phải) trong một số nhị phân (còn được gọi là phép toán chuyển vị nhị phân - binary shifting) tương đương với phép chia 2 trong hệ thập phân, vì khi làm như vậy, giá trị của số giảm xuống một nửa. Xin xem thêm Phép toán thao tác bit.

Hệ cơ số 32

Số nhị phân có thể đổi sang hệ cơ số 32. Do 32 = 2⁵. Phải cần 5 ký tự số để biểu đạt dễ dàng.