Tác giả: Nam Phạm
Trong bài học đầu tiên của lớp CS 101 - Nhập môn khoa học máy tính với Python, chúng ta tìm hiểu về hệ thống đếm nhị phân và ứng dụng của nó trong khoa học máy tính.
1. Ôn tập về số mũ:
Trước khi tìm hiểu về các hệ thống số đếm, chúng ta cùng ôn tập về phép tính luỹ thừa và số mũ trong toán học nhé. Luỹ thừa là cách biểu diễn ngắn gọn của phép tính nhân các số giống nhau nhiều lần. Ví dụ: 23 = 2x2x2, trong đó 2 là cơ số, 3 là số mũ. Trường hợp đặc biệt với số mũ là 0 thì kết quả sẽ bằng 1. Ví dụ: 20 = 1. Phép toán ngược lại của luỹ thừa là log (logarithm). Ví dụ: log28 = 3 vì 23 = 8. Phép toán này giúp tìm số mũ khi biết cơ số.
2. Hệ thập phân (Decimal) và nhị phân (Binary):
Hệ thống đếm thập phân sử dụng 10 chữ số 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 để biểu diễn những số tự nhiên. Nguồn gốc của hệ thống đếm thập phân có thể bắt nguồn từ việc con người có 10 ngón tay. Hệ thống đếm thập phân biểu diễn số tự nhiên nhờ vào cơ số 10. Ví dụ: 2023 = 3×100 + 2×101 + 0x102 + 2×103. Hệ thống đếm thập phân được sử dụng phổ biến cho con người đếm và tính toán. Tuy nhiên, máy tính lại cần một hệ thống đếm khác để có thể thuận tiện biểu diễn các tính toán phức tạp.
Hệ thống đếm nhị phân chỉ sử dụng 2 chữ số 0, 1 để biểu diễn những số tự nhiên. Hệ thống đếm nhị phân biểu diễn số tự nhiên nhờ vào cơ số 2. Ví dụ: 11111100111 = 1×20 + 1×21 + 1×22 + 0x23 + 0x24 + 1×25 + 1×26 + 1×27 + 1×28 + 1×29 + 1×210 = 2023. Hệ thống đếm nhị phân được sử dụng trong máy tính, biểu diễn 2 trạng thái: bật (1) và tắt (0). Hai trạng thái này được dùng để lưu trữ và truyền dữ liệu trong máy tính. Mỗi trạng trái đó được gọi là 1 bit trong máy tính. Hệ thống đếm nhị phân ngày nay được nghiên cứu ở châu Âu vào thế kỷ 16, 17 bởi nhà toán học Gottfried Leibniz. Tuy nhiên, hệ thống đếm nhị phân đã xuất hiện trước đó ở nhiều nền văn hoá cổ như Ai Cập, Trung Quốc, và Ấn Độ.
Vậy tại sao máy tính lại cần hệ thống đếm nhị phân? Chúng ta sẽ liên hệ một ví dụ đơn giản về công tắc điện. Chúng ta sẽ dễ dàng biểu diễn 2 trạng thái của công tắc điện (bật, tắt) dễ dàng hơn nếu dùng 2 chữ số 0, 1 trong hệ nhị phân thay vì dùng 10 chữ số trong hệ thập phân. Một ví dụ khác là biểu diễn phép tính cộng. Khi dạy máy tính phép tính cộng, chúng ta chỉ cần dạy máy tính sử dụng bảng sau
Trong đó:
0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 1×20 + 1×20 = 1×21 + 0x20
Nếu chúng ta dùng hệ đếm thập phân thì máy tính cần phải học bảng phức tạp sau
Với con người, hệ đếm nhị phân khá phức tạp vì để biểu diễn một số không lớn lắm như 2023 trong hệ nhị phân, chúng ta cần phải sử dụng quá nhiều chữ số. Tuy nhiên đó lại không phải là trở ngại với máy tính.
3. Ứng dụng của số nhị phân:
Một trong những ứng dụng của số nhị phân là biểu diễn các phép toán logic (boolean logic). Logic nhị phân được giới thiệu từ những năm 1930 bởi nhà toán học người Anh, George Boole. Kể từ đó, số nhị phân được sử dụng nhiều trong điện tử và máy tính. Số nhị phân được sử dụng trong xử lý ảnh, thu tiếng audio và phim HD, lưu trữ và xử lý số liệu. Một bức ảnh sẽ gồm những pixel được biểu diễn bởi số nhị phân. Chuỗi số nhị phân biểu diễn hình ảnh còn thể hiện màu sắc của bức ảnh. Ngoài ra vì số nhị phân được dùng để lưu dữ liệu nên dung lượng bộ nhớ của máy tính, điện thoại thường là luỹ thừa của 2. 1 byte tương ứng với 8 bits, 1 KB = 1024 bytes, 1 MB = 1024 KBs. Ngoài ra luỹ thừa của 2 còn xuất hiện trong trò chơi 2048 nổi tiếng.
Một ứng dụng quan trọng khác của số nhị phân đó là bảng mã ASCII. Bảng mã ASCII dùng để mã hoá các ký tự trong máy tính và trên internet. Bảng mã ASCII cơ bản có thể biểu diễn được 128 ký tự, bao gồm bảng chữ cái tiếng anh viết hoa và viết thường, chữ số từ 0 đến 9, và một vài ký tự đặc biệt. Ký tự trong bảng mã ASCII có thể được biểu diễn bởi hệ thập phân và hệ nhị phân. Vì máy tính sử dụng 7 bits để biểu diễn một ký tự nên bảng mã ASCII cơ bản có thể biểu diễn được 27 = 128 ký tự. Tuy nhiên vẫn có những bảng mã ASCII có thể biểu diễn được 256 ký tự bằng cách sử dụng 8 bits. Hệ nhị phân còn có thể được sử dụng để biểu diễn emoji như chúng ta đã học ở bài 1 của lớp CS 101.
4. Cách đổi số từ hệ thập phân sang nhị phân và ngược lại:
Để đổi từ số nhị phân sang thập phân, chúng ta chỉ cần sử dụng các luỹ thừa của 2 tương ứng với các vị trí của từng chữ số. Ví dụ: 11111100111 = 1×20 + 1×21 + 1×22 + 0x23 + 0x24 + 1×25 + 1×26 + 1×27 + 1×28 + 1×29 + 1×210 = 2023. Trong Python, chúng ta có thể sử dụng câu lệnh int(“11111100111”, 2).
Để đổi từ số trong hệ thập phân sang nhị phân, chúng ta sẽ chia số đó liên tục cho 2 và ghi lại số dư (0 hoặc 1). Sau đó chúng ta ghi lại số dư từ phép chia cuối cùng lên đầu tiên. Ví dụ:
2023 / 2 = 1011 dư 1
1011 / 2 = 505 dư 1
505 / 2 = 252 dư 1
252 / 2 = 126 dư 0
126 / 2 = 63 dư 0
63 / 2 = 31 dư 1
31 / 2 = 15 dư 1
15 / 2 = 7 dư 1
7 / 2 = 3 dư 1
3 / 2 = 1 dư 1
1 / 2 = 0 dư 1
Như vậy: 2023 trong hệ nhị phân là 11111100111. Trong Python, chúng ta có thể sử dụng câu lệnh format(2023, “b”).
5. Tổng kết:
Hệ đếm nhị phân được máy tính sử dụng thay vì hệ thống thập phân. Hệ nhị phân dựa trên luỹ thừa của 2. Một vài ứng dụng của hệ nhị phân bao gồm lưu trữ dữ liệu dưới dạng bits, xử lý ảnh, tín hiệu, và biểu diễn ký tự bằng bảng mã ASCII. Các bạn học sinh còn thấy ứng dụng nào hữu ích của số nhị phân thì có thể chia sẻ trên STEAMese Profile nhé.