Hệ nhị phân (hay hệ đếm cơ số hai hoặc mã nhị phân) là một hệ đếm sử dụng hai ký tự để biểu diễn giá trị số, bằng cách tổng hợp các lũy thừa của số 2. Hai ký tự này thường là 0 và 1; chúng được dùng rộng rãi để biểu thị hai trạng thái tương ứng (có trạng thái cao là 1 và không có trạng thái thấp là 0). Với tính đơn giản và dễ thực hiện vật lý, hệ nhị phân đã trở thành nền tảng căn bản của các thiết bị điện tử hiện đại.
Lịch sử
Hệ nhị phân đã được nhà toán học cổ từ Ấn Độ là Pingala phác thảo từ thế kỷ thứ ba trước Công Nguyên.
Một tập hình bát quái đầy đủ gồm 64 hình sao sáu cạnh, tương ứng với 3 bit và 6 bit trong hệ nhị phân, được ghi lại trong bản ghi cổ Kinh Dịch.
Nhiều tổ hợp nhị phân tương tự cũng có trong hệ thống bói toán truyền thống của châu Phi, ví dụ như Ifá, và trong nghệ thuật bói đất của phương Tây.
Thứ tự các hình sao sáu cạnh trong Kinh Dịch, biểu thị cho một chuỗi số nguyên từ 0 đến 63, cùng với một công thức để tạo ra chuỗi số này, đã được học giả và triết gia người Trung Hoa Thiệu Ung (邵雍), thế kỷ 11, thiết lập. Tuy nhiên, không có bằng chứng cụ thể cho thấy Thiệu Ung đã hiểu về phương pháp tính toán sử dụng hệ nhị phân.
Vào thế kỷ 17, nhà triết học người Đức Gottfried Leibniz đã tường thuật chi tiết hệ thống nhị phân trong tác phẩm “Giải thích về thuật toán trong hệ nhị phân” (Explication de l'Arithmétique Binaire). Hệ thống số mà Leibniz sử dụng chỉ gồm số 0 và số 1, tương tự như hệ nhị phân hiện đại.
Năm 1854, nhà toán học người Anh George Boole đã xuất bản một bài viết chi tiết về một hệ thống logic sau này được biết đến với tên gọi đại số Boole, đánh dấu một bước đột phá trong lịch sử toán học. Hệ thống logic của ông đã trở thành nền tảng cho việc phát triển hệ nhị phân, đặc biệt là trong việc thực hiện hệ thống này trên các máy tính đ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 luận văn tại MIT, giới thiệu phương pháp xây dựng đại số Boole và số học nhị phân sử dụng rơ-le và công tắc lần đầu tiên trong lịch sử. Tác phẩm mang tựa đề “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). Luận án của ông đã được chứng minh là khả thi trong thiết kế mạch điện kỹ thuật số.
Tháng 11 năm 1937, George Stibitz, làm việc tại Bell Labs, hoàn thành thiết kế một máy tính dùng rơ-le và đặt tên là “Model K” - chữ K tượng trưng cho từ “kitchen” (nhà bếp) trong tiếng Anh, nơi ông lắp ráp máy tính của mình. Máy tính này có thể thực hiện phép cộng trong hệ nhị phân. Cơ quan Bell Labs đã ra lệnh và cho phép một chương trình nghiên cứu tổng thể được thực hiện 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 của họ, hoàn thành vào ngày 8 tháng 1 năm 1940, có thể giải quyết các phép tính số phức hợp. Trong một bài thuyết trình tại hội nghị của Hội Toán học Mỹ tại Dartmouth College vào ngày 11 tháng 9 năm 1940, Stibitz đã có thể điều khiển Máy tính số phức hợp từ xa qua đường dây điện thoại bằng thiết bị teletype. Đây là lần đầu tiên một máy tính được điều khiển từ xa bằng đường dây điện thoại, với sự chứng kiến của các nhà toán học nổi tiếng như John von Neumann, John Mauchly và Norbert Wiener, được ghi lại trong hồi ký của họ.
Biểu thức
Mọi số học có thể được biểu diễn trong hệ nhị phân bằng một chuỗi các số bit (binary digit), vì vậy có thể được hiểu bằng bất kỳ cơ chế nào có thể biểu thị hai trạng thái khác biệt. Danh sách các chuỗi ký tự sau đây cho phép phân tích giải thích tương đương với các giá trị số trong hệ nhị phân:
1 0 1 0 0 1 1 0 1 0 | - | - - | | - | - x o x o o x x o x o y n y n n y y n y n
Giá trị số được biểu diễn trong mỗi trường hợp phụ thuộc vào giá trị mà nó được gán để biểu thị. Trên máy tính, các giá trị số được biểu thị bằng hai mức điện thế khác nhau; trong đĩa từ tính, chiều từ của các nam châm hai cực có thể được sử dụng để biểu thị hai giá trị này. Một giá trị biểu thị trạng thái 'dương', 'có' hoặc 'chạy' không phải lúc nào cũng tương đương với số một trong hệ số, tuy nhiên điều này phụ thuộc vào cấu trúc của hệ thống đang được sử dụng.
Song song với chữ số Ả Rập thông thường, số nhị phân thường được biểu diễn bằng hai ký tự 0 và 1. Khi viết ra, các số nhị phân thường được ký hiệu nguyên gốc của hệ số. Các phương thức ký hiệu thường được sử dụng có thể được liệt kê như sau:
- 100101 nhị phân (mô tả dạng hệ số)
- 100101b (chữ b kết nối liên tục chỉ dạng hệ số nhị phân - lấy chữ cái đầu tiên của binary trong tiếng Anh, nghĩa là 'nhị phân')
- bin 100101 (sử dụng ký hiệu dẫn đầu để mô tả dạng hệ số nhị phân - bin cũng được lấy từ binary)
- 1001012 (ký hiệu viết nhỏ ở dưới chỉ gốc nhị phân)
Khi nói, mỗi chữ số của các giá trị số nhị phân thường được phát âm riêng biệt, để phân biệt chúng với số thập phân. Ví dụ, giá trị '100' nhị phân được phát âm là 'một không không', thay vì 'một trăm', để rõ ràng về tính nhị phân của giá trị được nhắc đến, đồng thời đảm bảo sự chính xác trong việc truyền tải thông tin. Vì giá trị '100' tương đương với giá trị '4' trong hệ thập phân, nếu nó được diễn giải là 'một trăm', sẽ gây nhầm lẫn trong tư duy.
Biểu thị giá trị bằng hệ nhị phân
Cách đếm trong hệ nhị phân tương tự như các hệ thống số khác. Bắt đầu từ hàng đơn vị với một ký tự, việc đếm số được thực hiện bằng các ký tự cho phép để biểu thị giá trị, theo chiều tăng dần. Hệ thập phân đếm từ ký tự 0 đến ký tự 9, trong khi hệ nhị phân chỉ sử dụng ký tự 0 và 1.
Khi các ký tự trong một hàng đã được sử dụng hết (như hàng đơn vị, hàng chục, hàng trăm trong hệ thập phân), con số ở hàng tiếp theo (bên trái) được nâng giá trị lên một vị trí, và con số ở hàng hiện tại được thiết lập lại thành ký tự 0. Trong hệ thập phân, quy trình đếm như sau:
- 000, 001, 002,... 007, 008, 009, (số cuối cùng bên phải quay trở lại vị trí ban đầu trong khi số tiếp theo bên trái được nâng cấp lên một giá trị)
- 010, 011, 012,...
- ...
- 090, 091, 092,... 097, 098, 099, (hai số bên phải quay trở lại vị trí ban đầu trong khi số tiếp theo bên trái được nâng cấp lên một giá trị)
- 100, 101, 102,...
Sau khi một con số đạt ký tự 9, số đó được thiết lập lại thành ký tự 0, và con số tiếp theo bên trái được nâng giá trị lên một vị trí mới. Trong hệ nhị phân, quy luật đếm tương tự như vậy được áp dụng, với sự khác biệt là chỉ có 2 ký tự được sử dụng, tức là ký tự 0 và 1. Vì vậy, khi một con số đã đạt ký tự 1 trong hệ nhị phân, sự nâng cấp giá trị quay trở lại vị trí ban đầu, tức là ký tự 0, và nâng cấp con số tiếp theo bên trái lên một giá trị:
- 000, 001, (số cuối bên phải được đưa trở lại vị trí ban đầu, trong khi số ở hàng bên cạnh về phía trái được tăng lên một giá trị)
- 010, 011, (hai số cuối bên phải được đưa trở lại vị trí ban đầu, trong khi số ở hàng bên cạnh về phía trái được tăng lên một giá trị)
- 100, 101,...
Giản đơn hóa hệ nhị phân
Để giản đơn hóa hệ nhị phân, chúng ta có thể nghĩ như sau: Chúng ta sử dụng hệ thập phân. Điều này có nghĩa là các giá trị của từng hàng số (đơn vị, chục, v.v..) chỉ được biểu diễn bằng một trong 10 ký tự: 0, 1, 2, 3, 4, 5, 6, 7, 8, hoặc 9. Chúng ta đều quen thuộc với những ký tự này và cách sử dụng chúng trong hệ thập phân. Khi đếm các giá trị, chúng ta bắt đầu bằng ký tự 0, sau đó di chuyển lên đến ký tự 9. Chúng ta gọi điều này là 'một hàng'.
Với các số trên một hàng, chúng ta có thể liên tưởng đến vấn đề về tính nhân. Số 5 có thể hiểu là 5 × 10 (10=1) tương đương với 5 x 1, vì bất cứ số nào mũ 0 đều bằng 1 (loại trừ số 0). Khi mở rộng sang phía trái một vị trí, chúng ta tăng số mũ của 10 lên một giá trị, vì vậy để biểu diễn 50, chúng ta áp dụng phương pháp tương tự và số này có thể được viết là 5 x 10, hoặc đơn giản hơn là 5 x 10.
Khi đã sử dụng hết các ký tự trong hệ thập phân, chúng ta chuyển sang bên trái và bắt đầu với số 1, đại diện cho hàng chục. Sau đó, chúng ta đưa hàng 'đơn vị' về ký tự đầu tiên, là số không.
Hệ nhị phân có cơ sở là 2, hoạt động tương tự như hệ thập phân, nhưng chỉ sử dụng 2 ký tự để biểu diễn: 0 và 1. Chúng ta bắt đầu từ hàng 'đơn vị', đặt số 0 trước tiên, sau đó lên số 1. Khi đạt số 1, chúng ta không có ký tự nào để biểu diễn giá trị cao hơn, do đó, chúng ta phải sử dụng số 1 ở hàng 'hai' (tương tự như hàng chục trong hệ thập phân), vì không có ký tự '2' trong hệ nhị phân.
Trong hệ nhị phân, giá trị 10 có thể được biểu diễn tương tự như (1 x 2) + (0 x 2). Giá trị này tương đương với số 2 trong hệ thập phân. Chuyển từ nhị phân sang thập phân tương tự như sau:
Để xem cách chuyển đổi cụ thể từ một hệ sang hệ khác, hãy xem phần Phương pháp chuyển hệ dưới đây.
Ngược lại, có thể suy nghĩ theo cách khác. Khi đã dùng hết các ký tự trong hệ số, ví dụ như dãy '11111', thêm '1' vào bên trái và đặt tất cả các số bên phải về '0', tạo thành 100000. Cách này áp dụng cho các số ở giữa như dãy 100111. Thêm 1 vào số này, dịch vị trí sang trái (vị trí thứ tư), nâng vị trí này từ 0 lên 1, và đặt lại các số 1 phía bên phải về 0, tạo thành 101000.
Các phép tính dùng hệ nhị phân
Phép tính trong hệ nhị phân tương tự như các hệ khác. Cộng, trừ, nhân và chia đều áp dụng được với các giá trị nhị phân.
Tính cộng
Phép tính đơn giản nhất trong hệ nhị phân là tính cộng. Cộng hai đơn vị trong hệ nhị phân được thực hiện như sau:
- 0 + 0 = 0
- 0 + 1 = 1
- 1 + 0 = 1
- 1 + 1 = 0 (nhớ 1 lên hàng thứ 2)
Cộng hai số '1' với nhau tạo ra giá trị '10', tương đương với giá trị 2 trong hệ thập phân. Điều này tương tự như khi cộng hai số đơn vị trong hệ thập phân. Khi kết quả bằng hoặc lớn hơn giá trị gốc (10), số ở hàng tiếp theo sẽ được nâng lên:
- 5 + 5 = 10
- 7 + 9 = 16
Hiện tượng này được gọi là 'nhớ' hoặc 'mang sang', trong hầu hết các hệ số được sử dụng để tính toán và đếm. Khi tổng vượt quá giá trị gốc của hệ số, phương thức 'nhớ' một sang vị trí bên trái và thêm một hàng. Phương thức 'nhớ' cũng hoạt động tương tự trong hệ nhị phân:
1 1 1 1 1 (nhớ) 0 1 1 0 1 + 1 0 1 1 1 """- = 1 0 0 1 0 1 Bản sửa đổi a b c d e f 1 1 1 1 1 0 (nhớ) 0 1 1 0 1 + 1 0 1 1 1 Hoặc ta có thể ghi thành 1 1 1 1 1 0 (nhớ) 0 0 1 1 0 1 + 0 1 0 1 1 1 """- = 1 0 0 1 0 0 (tính chất số 0 đứng ở đầu tiên không có giá trị) Ở cột f hàng nhớ là bằng 0 (khởi tạo giá trị bộ nhớ ban đầu không có gì nên bằng 0) Chính xác thì phép tính được thực hiện theo dạng (nhớ) + số đầu tiên + số thứ 2 f. 0 + 1 + 1 = 1 0 => 0 vào kết quả (1 vào nhớ) e. 1 + 0 + 1 = 1 0 => 0 vào kết quả (1 vào nhớ) d. 1 + 1 + 1 = 1 1 => 1 vào kết quả (1 vào nhớ) ' Chú thích cho phép tính c: g h 0 0 (nhớ) 1 0 + 0 1 = 1 1 h. 0 + 0 + 1 = 1 => 1 vào kết quả (0 vào nhớ) g. 0 + 1 + 0 = 1 => 1 => KQ = 1 1 ' c. 1 + 1 + 0 = 1 0 => 0 vào kết quả (1 vào nhớ) b. 1 + 0 + 1 = 1 0 => 0 vào kết quả (1 vào nhớ) a. 1 + 0 + 0 = 1 => 1 vào kết quả => 100100 P/s: Phép tính trên do tự tính có gì sai xin chỉ giáo
Trong ví dụ trên, hai số được cộng với nhau: 011012 (13 thập phân) và 101112 (23 thập phân). Hàng trên cùng biểu đạt những số nhớ, hoặc mang sang. Bắt đầu bằng cột cuối cùng bên phải, 1 + 1 = 102. 1 được mang sang bên trái, và 0 được viết vào hàng tổng phía dưới, cột cuối cùng bên phải. Hàng thứ hai từ cột cuối cùng bên phải được cộng tiếp theo: 1 + 0 + 1 = 102; Số 1 lại được nhớ lại và mang sang, và số 0 được viết xuống dưới cùng. Cột thứ ba: 1 + 1 + 1 = 112. Lần này 1 được nhớ và mang sang hàng bên cạnh, và 1 được viết xuống hàng dưới cùng. Tiếp tục khai triển theo quy luật trên cho chúng ta đáp án cuối cùng là 1001002.
Trong Đánh thức tài năng quyển 5, tập 22 đã ghi các kiến thức này.
Tính trừ
Phép tính trừ theo quy chế tương tự:
- 0 − 0 = 0
- 0 − 1 = 1 (mượn 1 ở bit tiếp theo)
- 1 − 0 = 1
- 1 − 1 = 0
Một đơn vị nhị phân được trừ với một đơn vị nhị phân khác như sau:
* * * * (hình sao đánh dấu các cột phải mượn) 1 1 0 1 1 1 0 − 1 0 1 1 1 """--- =1 0 1 0 1 1 1 1 1 1 1 (bit mượn) 1 1 0 1 1 1 0 - 1 0 1 1 1 """"- =1 0 1 0 1 1 1
Trừ hai số dương cũng tương tự như 'cộng' một số âm với giá trị tương đồng của một số tuyệt đối; máy tính thường dùng ký hiệu Bù 2 để diễn đạt số có giá trị âm. Ký hiệu này loại trừ được nhu cầu bức thiết phải có một phương pháp làm phép trừ biệt lập. Xin xem thêm chi tiết trong chương mục Bù 2.
Tính nhân
Phép tính nhân trong hệ nhị phân cũng tương tự như phương pháp làm trong hệ thập phân. Hai số A và B được nhân với nhau bởi những tích số cục bộ: với mỗi con số ở B, tích của nó với số một con số trong A được tính và viết xuống một hàng mới, mỗi hàng mới phải chuyển dịch vị trí sang bên trái, hầu cho con số cuối cùng ở bên phải đứng cùng cột với vị trí của con số ở trong B đang dùng. Tổng của các tích cục bộ này cho ta kết quả tích số cuối cùng.
Vì chỉ có hai con số trong hệ nhị phân, nên chỉ có 2 kết quả khả quan trong tích cục bộ:
- Nếu con số trong B là 0, tích cục bộ sẽ là 0
- Nếu con số trong B là 1, tích cục bộ sẽ là số ở trong A
Ví dụ, hai số nhị phân 1011 và 1010 được nhân với nhau như sau:
1 0 1 1 (A) × 1 0 1 0 (B) """-- 0 0 0 0 ← tương đương với 0 trong B + 1 0 1 1 ← tương đương với một trong A + 0 0 0 0 + 1 0 1 1 """--- = 1 1 0 1 1 1 0
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à 110112, hoặc 27 trong số thập phân, số chia là 1012, 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 1102 để chia với số chia, tức là 1012, đượ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 110112 chia cho 1012 là 1012, 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à 102. 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 logic 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 logic, 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 logic, 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 thực hiện 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ử logic NOT (phép đổi ngược, 0 thành 1 và ngược lại) có thể được thực hiện trên từng bit một trong một dãy số nhị phân. Đôi khi, những phép thao tác này được sử dụng làm những phương pháp tối ưu trong các thao tác số học, đồng thời chúng cũng mang lại 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 dịch bit 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 về Phép toán thao tác bit.
Phương pháp chuyển đổi giữa các hệ số nhị phân và các hệ số khác
Hệ thập phân
Phương pháp này có thể được sử dụng để chuyển đổi số từ bất kỳ hệ số nào, tuy nhiên có những phương pháp tốt hơn cho các số có dạng là lũy thừa của 2, ví dụ như hệ bát phân (8) và hệ thập lục phân (16) được liệt kê dưới đây.
Trong các hệ thống số, giá trị của một con số được xác định bởi vị trí của nó trong một dãy các ký hiệu con số. Những con số ở vị trí thấp hơn, hoặc ít quan trọng hơn (vì chúng không ảnh hưởng nhiều đến kết quả tính toán khi xảy ra sai số, ví dụ như số 10034 có thể được làm tròn thành 10000 trong thống kê dân số mà không làm thay đổi kết quả quan trọng), thường có mũ nhỏ hơn theo hệ số cơ số (2 < 10). Mũ đầu tiên, là số ít hơn số lượng chữ số của một con số, giảm đi 1. Ví dụ, một con số có 5 chữ số sẽ có mũ đầu tiên là 4. Trong hệ thập phân, cơ sở là 10, do đó số cuối cùng bên trái của một con số 5 chữ số có mũ là 4, được biểu thị tại vị trí 10 (chục nghìn). Xem ví dụ sau:
- 97352 tương ứng với:
9 × 10 (9 × 10000 = 90000) cộng 7 × 10 (7 × 1000 = 7000) cộng 3 × 10 (3 × 100 = 300) cộng 5 × 10 (5 × 10 = 50) cộng 2 × 10 (2 × 1 = 2)
Phép nhân với cơ số hệ sẽ dễ dàng hơn là phép tính đơn giản. Vị trí của các chữ số sẽ được dịch sang bên trái một vị trí và số 0 sẽ được thêm vào phía bên phải của dãy số. Ví dụ 9735 nhân 10 sẽ bằng 97350. Giá trị của một dãy số có thể được xác định khi một số được cộng vào phía sau số cuối cùng bằng cách nhân tất cả các chữ số trước số cuối cùng với cơ sở hệ số, loại bỏ số cuối cùng, rồi cộng thêm số đó vào cuối cùng. 97352 = 9735 x 10 + 2. Trong hệ nhị phân, ví dụ 11011001112 = 1101100112 x 2 + 1. Đây là phương pháp quan trọng để biến đổi hệ số. Trong mỗi bước, chúng ta viết số mới bằng cách thay đổi theo công thức 2 × k + 0 hoặc 2 × k + 1 với một số nguyên k nào đó.
- 118 tương đương:
59 × 2 + 0 (29 × 2 + 1) × 2 + 0 ((14 × 2 + 1) × 2 + 1) × 2 + 0 (((7 × 2 + 0) × 2 + 1) × 2 + 1) × 2 + 0 ((((3 × 2 + 1) × 2 + 0) × 2 + 1) × 2 + 1) × 2 + 0 (((((1 × 2 + 1) × 2 + 1) × 2 + 0) × 2 + 1) × 2 + 1) × 2 + 0
- 1 × 2 + 1 × 2 + 1 × 2 + 0 × 2 + 1 × 2 + 1 × 2 + 0 × 2
- 11101102
Do đó, phương pháp chuyển đổi một số nguyên từ hệ thập phân sang hệ nhị phân tương đương có thể thực hiện bằng cách chia số này cho 2 và viết số dư vào hàng (đơn vị). Kết quả này tiếp tục được chia cho 2 và viết số dư vào hàng (chục). Phương pháp này tiếp tục cho đến khi thương của phép chia là 0.
Ví dụ, số 118 trong hệ thập phân là:
Phép tính Số dư 118 ÷ 2 = 59 0 59 ÷ 2 = 29 1 29 ÷ 2 = 14 1 14 ÷ 2 = 7 0 7 ÷ 2 = 3 1 3 ÷ 2 = 1 1 1 ÷ 2 = 0 1
Xếp các số dư từ dưới lên trên, cho chúng ta số nhị phân 11101102.
Để chuyển đổi số nhị phân sang hệ thập phân, ta làm ngược lại. Bắt đầu từ bên trái, nhân đôi kết quả và cộng số bên cạnh cho đến khi không còn số nào nữa. Ví dụ để chuyển đổi 1100101011012 sang hệ thập phân, kết quả là 3245.
Kết quả Số còn lại 0 110010101101 0 × 2 + 1 = 1 10010101101 1 × 2 + 1 = 3 0010101101 3 × 2 + 0 = 6 010101101 6 × 2 + 0 = 12 10101101 12 × 2 + 1 = 25 0101101 25 × 2 + 0 = 50 101101 50 × 2 + 1 = 101 01101 101 × 2 + 0 = 202 1101 202 × 2 + 1 = 405 101 405 × 2 + 1 = 811 01 811 × 2 + 0 = 1622 1 1622 × 2 + 1 = 3245
Kết quả là 3245.
Phần phân số trong một số tự nhiên cũng được chuyển đổi bằng cách sử dụng phép toán chuyển vị nhị phân để nhân đôi hoặc giảm giá trị của con số xuống một nửa.
Với phần phân số nhị phân '0,110101101012', giá trị của con số đầu tiên của phần thập phân là , và con số thứ hai là , và cứ thế tiếp tục. Nếu chúng ta có giá trị 1 ngay sau dấu phẩy, thì giá trị số thập phân ít nhất là , và ngược lại. Nếu chúng ta nhân đôi giá trị con số lên, thì giá trị số phải ít nhất là 1. Điều này gợi ý đến một thuật toán: liên tục nhân đôi con số cần chuyển đổi, ghi lại kết quả nếu kết quả ít nhất là 1, nhưng loại bỏ phần số nguyên.
Ví dụ: , trong hệ nhị phân là:
Biến đổi Kết quả 0, 0,0 0,01 0,010 0,0101
Vì vậy phần phân số 0,333... tương đương với phần phân số 0,0101... trong hệ nhị phân.
hoặc lấy ví dụ số 0,110, trong hệ nhị phân là:
Biến đổi Kết quả 0,1 0, 0.1 × 2 = 0,2 < 1 0,0 0.2 × 2 = 0,4 < 1 0,00 0.4 × 2 = 0,8 < 1 0,000 0.8 × 2 = 1,6 ≥ 1 0,0001 0.6 × 2 = 1,2 ≥ 1 0,00011 0.2 × 2 = 0,4 < 1 0,000110 0.4 × 2 = 0,8 < 1 0,0001100 0.8 × 2 = 1,6 ≥ 1 0,00011001 0.6 × 2 = 1,2 ≥ 1 0,000110011 0.2 × 2 = 0,4 < 1 0,0001100110
Đây cũng là một phân số vô hạn tuần hoàn 0,000110011.... Đáng ngạc nhiên là có những phân số thập phân không tuần hoàn nhưng lại trở thành phân số tuần hoàn khi chuyển sang hệ nhị phân. Nhiều người thấy ngạc nhiên khi thực hiện phép cộng 0,1 +... + 0,1 (10 số hạng) và kết quả khác với 1 trong khi sử dụng phép toán phân số (floating point arithmetic).
Phương pháp cuối cùng là chuyển đổi phân số nhị phân sang thập phân. Việc khó khăn duy nhất là khi xử lý các phân số tuần hoàn, ngoài ra, phương pháp này có thể được thực hiện bằng cách dịch vị trí của dấu thập phân, làm tròn thành số nguyên, thực hiện biến đổi và chia với số mũ tương ứng của 2 trong hệ thập phân.
= 1100 ,101110011100... = 1100101110 ,0111001110... = 11001 ,0111001110... = 1100010101 = (789/62)10
Cách khác để chuyển đổi số nhị phân sang hệ thập phân nhanh hơn, đối với những người quen thuộc với hệ thập lục phân, là thực hiện theo cách gián tiếp. Đầu tiên chuyển ( trong hệ nhị phân) sang ( trong hệ thập lục phân), sau đó chuyển ( trong hệ thập lục phân) sang ( trong hệ thập phân).
Hệ cơ số 32
Số nhị phân có thể chuyển đổi sang hệ cơ số 32. Bởi vì 32 = 2. Điều này yêu cầu 5 ký tự số để biểu thị một cách dễ dàng.
Hệ thập lục phân (cơ số 16 hay hệ hexa)
Số nhị phân có thể chuyển sang hệ thập lục phân một cách dễ dàng hơn. Việc này dễ dàng hơn do hệ thập lục phân (16) là mũ của hệ nhị phân (2). Cụ thể, 16 = 2. Vì vậy, chỉ cần 4 ký tự số trong hệ nhị phân để biểu thị một ký tự số trong hệ thập lục phân.
Dưới đây là bảng liệt kê từng ký tự số trong hệ thập lục phân, với giá trị tương ứng của nó trong hệ thập phân và dãy bốn ký tự số tương đương trong hệ nhị phân.
|
|
|
|
Để chuyển đổi từ hệ thập lục phân sang số nhị phân, ta chỉ cần thay thế các dãy số tương đương trong hệ nhị phân:
- 3A16 = 0011 10102
- E716 = 1110 01112
Để chuyển đổi số nhị phân sang hệ thập lục phân tương đương, ta cần nhóm các ký tự thành nhóm bốn ký tự (nhóm bốn con số). Nếu số lượng các số không phải là bội số của 4 (4, 8, 16...), chỉ cần thêm số 0 vào bên trái, gọi là phép độn thêm số (padding). Ví dụ:
- 10100102 = 0101 0010 nhóm lại với số độn thêm = 5216
- 110111012 = 1101 1101 nhóm lại = DD16
Để chuyển đổi số thập lục phân sang số thập phân tương đương, ta nhân mỗi giá trị thập phân của từng chữ số trong số thập lục phân với mũ của 16, sau đó tính tổng các giá trị:
- C0E716 = (12 × 16) + (0 × 16) + (14 × 16) + (7 × 16) = (12 × 4096) + (0 × 256) + (14 × 16) + (7 × 1) = 49.38310
Hệ bát phân (cơ số 8)
Số nhị phân cũng có thể được chuyển đổi sang hệ bát phân một cách đơn giản, vì bát phân dùng cơ số 8, là số mũ của 2 (ví dụ như 2), vậy số bát phân cần 3 chữ số nhị phân để biểu thị một cách đầy đủ một số bát phân. Mối tương ứng giữa các số bát phân và số nhị phân tương tự như mối tương đương với tám chữ số đầu tiên của hệ thập lục phân, đã được liệt kê trước đó. Số nhị phân 000 tương đương với số bát phân 0, số nhị phân 111 tương đương với số bát phân 7, và tương tự.
|
|
Phương pháp chuyển đổi từ bát phân sang nhị phân cũng tương tự như cách làm với hệ thập lục phân:
- 658 = 110 1012
- 178 = 001 1112
và từ nhị phân sang bát phân:
- 1011002 = 101 1002 nhóm lại = 548
- 100112 = 010 0112 nhóm lại với số độn thêm = 238
từ bát phân sang thập phân:
- 658 = (6 × 8) + (5 × 8) = (6 × 8) + (5 × 1) = 5310
- 1278 = (1 × 8) + (2 × 8) + (7 × 8) = (1 × 64) + (2 × 8) + (7 × 1) = 8710
Biểu thị số thực
Những số không phải là số nguyên có thể biểu thị bằng số mũ âm và dấu phẩy để phân tách phần số, ví dụ như số nhị phân 11,012 có nghĩa là:
1 × 2 (1 × 2 = 2) cộng 1 × 2 (1 × 1 = 1) cộng 0 × 2 (0 × ½ = 0) cộng 1 × 2 (1 × ¼ = 0,25)
Tổng số là 3,25 trong hệ thập phân.
Tất cả các số hữu tỷ nhị phân đều có một biểu thức hữu hạn sau dấu chấm phẩy. Các số hữu tỷ khác cũng có biểu thị nhị phân, nhưng thay vì là một dãy số hữu hạn, chúng lặp đi lặp lại vô hạn. Ví dụ:
- = = 0.0101010101...2
- Phân số 12/17 = 0.10110100 10110100 10110100...2
Số nhị phân không hữu hạn cũng không vô hạn được gọi là số vô tỷ (irrational number). Ví dụ:
- 0.10100100010000100000100.... là một dãy số vô tỷ mặc dù có mô hình lặp lại nhưng không có giới hạn về số lượng
- 1.0110101000001001111001100110011111110... là biểu thức nhị phân của (căn bậc hai của 2), một số vô tỷ khác. Số vô tỷ này không có mô hình lặp lại có thể nhận dạng, nhưng để chứng minh rằng là một số vô tỷ thì chúng ta cần có bằng chứng hơn nữa. Xem thêm về số vô tỷ để hiểu rõ hơn.
Số nhị phân
- Nhị phân dễ hiểu như là 1, 10, 11.
- Tôi chỉ thiếu 10 người để có một bộ ba!
- Có 10 loại người trên thế giới—những người hiểu nhị phân và những người không.'
- 11 là số kỳ diệu.