Cổng NAND (NAND Gate) là gì?
Logic Gate Trước khi nói về cổng NAND, ta hãy tìm hiểu xem logic gate là gì? Logic gate hiểu nôm na nó là một con chip làm một chức năng gì đó cụ thể, nó có thể thực hiện một logic đơn giản như And , Or hay phức tạp hơn như Adder . Boolean function Là lập ...
Logic Gate
Trước khi nói về cổng NAND, ta hãy tìm hiểu xem logic gate là gì?
Logic gate hiểu nôm na nó là một con chip làm một chức năng gì đó cụ thể, nó có thể thực hiện một logic đơn giản như And, Or hay phức tạp hơn như Adder.
Boolean function
Là lập trình viên tất nhiên ta đã quá quen với các hàm luận lý như And, Or và Not như ở bên dưới.
Đương nhiên là với logic thì ta chỉ có hai giá trị là True/False, Đúng/Sai, Bật/Tắt hay 1/0.
1 2 3 4 5 6 |
# AND(x, y) if x = 1 and y = 1 then output = 1 else output = 0 |
1 2 3 4 5 6 |
# OR(x, y) if x = 1 or y = 1 then output = 1 else output = 0 |
1 2 3 4 5 6 |
# NOT(x) if x = 1 then output = 0 else output = 1 |
Và với ba hàm luận lý này ta có thể biểu diễn được mọi biểu thức luận lý và từ đó suy ra là ta có thể điều khiển được hoạt động của một cái máy tính chỉ với ba hàm luận lý And, Or và Not này.
Vậy thì liên quan gì đến NAND Gate ở đây?
Vấn đề liên quan đến một câu hỏi được đặt ra: Ta có thể biểu diễn được mọi hàm luận lý với And, Or và Not, nhưng liệu ta có cần cả ba?
Câu trả lời là không và ta chỉ cần And và Not. Tại sao ta lại nói như vậy?
And and Not
Để chứng minh được chỉ And và Not là đủ, cách dễ nhất là ta chứng minh hàm Or có thể được biểu diễn bởi And và Not.
1 2 3 |
x OR y = NOT(NOT(x) AND NOT(y)) |
Vậy là ta đã chứng minh được chỉ với And và Not ta có thể biểu diễn được mọi biểu thức luận lý.
Vẫn chưa liên quan gì đến NAND cả?
Vâng và câu hỏi không chỉ dừng lại ở đó, mà tiếp diễn thành “Liệu ta có thể bỏ luôn cả And hoặc Not không?
Câu trả lời là không vì bản thân Not chỉ nhận một tham số đầu vào, còn And thì luôn trả về 0 nếu như có một đầu vào là 0.
Đó là chính là lý do ra đời của NAND.
Bí mật tối ưu hóa PHP & PHP7 hàng đầu. Đăng kí tìm hiểu ngay!NAND
Ta cùng xem qua truth table của NAND
1 2 3 4 5 6 7 |
x | y |out 0 | 0 | 1 0 | 1 | 1 1 | 0 | 1 1 | 1 | 0 |
Đơn giản thì biểu thức của NAND là:
1 2 3 |
NAND(x, y) = NOT(AND(x, y)) |
Ta có thể chứng minh được NAND có thể biểu diễn được bất kì một biểu thức luận lý nào bằng cách chứng minh nó có thể biểu diễn được And và Not
1 2 3 4 |
NOT(x) = NAND(x, x) AND(x, y) = NOT(NAND(x, y)) |
Vậy là chỉ với NAND gate, bạn có thể xây dựng được một cái máy tính rồi.
Techtalk via kipalog