Bài 5. Dữ liệu lôgic
SAU BÀI NÀY EM SẼ:
Việc thiết kế các mạch điện tử của máy tính có liên quan đến lôgic toán mà người có đóng góp nhiều nhất cho ngành Toán học này là nhà toán học người Anh George Boole (1815-1864). Ông đã xây dựng nên đại số lôgic, trong đó có các phép toán liên quan đến các yếu tố "đúng", "sai".
Vậy phép toán trên các yếu tố "đúng", "sai" là các phép toán nào?

1. CÁC GIÁ TRỊ CHÂN LÍ VÀ CÁC PHÉP TOÁN LÔGIC
Hoạt động 1. Đúng hay sai?
Dự báo thời tiết cho biết "Ngày mai trời lạnh và có mưa". Thực tế thì không phải khi nào dự báo thời tiết cũng đúng. Có bốn trường hợp có thể xảy ra như Bảng 5.1, trường hợp nào dự báo là đúng? Trường hợp nào dự báo là sai?
| Ngày mai trời lạnh | Ngày mai trời có mưa | Dự báo |
| Đúng | ||
| Đúng | Sai | |
| Sai | Đúng | |
| Sai | Sai |
Nếu ngày mai trời lạnh là đúng và ngày mai trời có mưa là đúng thì dự báo thời tiết là đúng. Như vậy chỉ trường hợp thứ nhất là đúng, còn tất cả các trường hợp khác đều sai.
a) Lôgic mệnh đề
Mệnh đề là một khẳng định có tính chất đúng hoặc sai. Ví dụ "Hà Nội là Thủ đô của Việt Nam" là một mệnh đề đúng, còn "9 là số nguyên tố" là một mệnh đề sai.
Các giá trị "Đúng", "Sai" chính là giá trị chân lí (giá trị lôgic) của mệnh đề mà nó thể hiện. Ta thường biểu diễn các giá trị lôgic "Đúng" và "Sai" tương ứng là 1 và 0.
DỮ LIỆU LÔGIC
Trong toán học, các biểu thức so sánh đều là các mệnh đề. Ví dụ "3 > 5" là mệnh đề sai; "2 * 3 = 6" là mệnh đề đúng.
Trong các ngôn ngữ lập trình, các biến và các hàm cũng có thể mang giá trị lôgic.
b) Các phép toán lôgic cơ bản
Từ ví dụ về dự báo thời tiết trên ta thấy: nếu ghép hai mệnh đề bằng liên từ "VÀ" thì được một mệnh đề mới và có thể "tính" được giá trị Đúng/Sai của mệnh đề mới từ giá trị lôgic của hai mệnh đề thành phần. "VÀ" có thể coi là một phép toán lôgic.
Bốn phép toán lôgic quan trọng nhất là các phép toán AND (phép nhân lôgic), OR (phép cộng lôgic), XOR (viết tắt của eXclusive OR, cộng loại trừ lôgic) và NOT (phép phủ định lôgic).
Bảng 5.2:
| pAND | p OR q | p XOR 9 | NOT p |
Như vậy, p AND q (đọc là p và q) là mệnh đề có giá trị đúng nếu cả p và q đều đúng; p OR q (đọc là p hoặc q) là mệnh đề có giá trị sai khi cả p và q đều sai; p XOR q là mệnh đề có giá trị sai khi p và q có giá trị như nhau; NOT p (đọc là phủ định của p) là mệnh đề có giá trị sai khi p đúng.
Biểu thức lôgic là một dãy các đại lượng lôgic được nối với nhau bằng các phép toán lôgic, có thể có dấu ngoặc để chỉ định thứ tự ưu tiên thực hiện các phép toán.
Ví dụ về các biểu thức lôgic:
Trong một biểu thức lôgic, phép toán đặt trong dấu ngoặc có độ ưu tiên cao nhất. Nếu không có dấu ngoặc thì phép phủ định được thực hiện trước. Các phép toán lôgic AND và OR có độ ưu tiên ngang nhau, được thực hiện tuần tự từ trái sang phải.
Kết quả của các phép toán trong Bảng 5.2 chỉ phụ thuộc vào giá trị lôgic (tương ứng với giá trị 1 hoặc 0) của các mệnh đề mà không phụ thuộc vào nội dung câu chữ cụ thể của chúng. Do vậy, các phép toán lôgic nêu trên có thể coi là các phép toán lôgic trên các bit (gọi tắt là các phép toán trên bit). Ví dụ, 1 AND 0 = 0; 1 OR 0 = 1. Các phép toán lôgic cũng được mở rộng cho các dãy bit. Ví dụ, phép cộng lôgic 2 byte sẽ cộng từng cặp bit tương ứng của 2 byte đó như trong ví dụ Hình 5.3.

| Phương án | p AND NOT q |
| 0 | |
| C | |
| D. |
2. BIỂU DIỄN DỮ LIỆU LÔGIC
Trong cuộc sống, những sự vật, hiện tượng có hai trạng thái đối lập như "sáng/tối", "bật/tắt", "có/không" đều có thể coi là thể hiện của hai đại lượng lôgic "Đúng/Sai".
Trong tin học, chỉ cần một bit với các giá trị 1 và 0, với quy ước 1 là "Đúng", 0 là "Sai". Tuy nhiên, một số ngôn ngữ lập trình có quy ước không mã hoá các đại lượng lôgic bởi một bit. Chẳng hạn, ngôn ngữ lập trình Python coi số 0 thể hiện giá trị "Sai" còn một số bất kì khác 0 thể hiện giá trị "Đúng". Trong tiếng Anh, đúng là True, sai là False nên có ngôn ngữ lập trình dùng hai kí tự "T" và "F" để biểu diễn dữ liệu lôgic.
Em hãy tìm một vài ví dụ về thông tin có hai giá trị đối lập, có thể quy về kiểu lôgic.
LUYỆN TẬP
VẬN DỤNG
Trong mạch điện có các công tắc và bóng đèn, ta quy ước các công tắc đóng thể hiện giá trị lôgic 1 và công tắc mở thể hiện giá trị lôgic 0; đèn sáng thể hiện giá trị lôgic 1 còn đèn tắt thể hiện giá trị lôgic 0.


