Bước tới nội dung

Phép hội

Bách khoa toàn thư mở Wikipedia
Sơ đồ Venn cho phép hội với hai toán hạng.
Sơ đồ Venn cho phép hội với hai toán hạng.

Phép hội, hay còn gọi là phép và logic hoặc hàm AND, là một toán tử logic thường được ký hiệu bằng và đọc là "và". Với hai mệnh đề AB, phép hội AB có giá trị đúng khi và chỉ khi cả hai mệnh đề đều đúng, và sai trong mọi trường hợp còn lại.[1]

Phép hội được ký hiệu bằng trong logic học, trong điện tử học, và & hoặc && trong nhiều ngôn ngữ lập trình.[2]

Tính chất

Bảng chân trị phép hội
A B AB
0 0 0
0 1 0
1 0 0
1 1 1

Trong toán họclogic học, phép hội có thể được biểu diễn qua phép tuyểnphép phủ định theo định lý De Morgan:[2]

AB=¬(¬A¬B)

Phép hội có các tính chất đại số sau:[2]

  • Kết hợp: a(bc)(ab)c
  • Giao hoán: abba
  • Phân phối: a(bc)(ab)(ac)
  • Lũy đẳng: aaa
  • Phần tử trung hòa: a𝟏a (phép hội với đúng giữ nguyên giá trị)
  • Phần tử hấp thụ: a𝟎𝟎 (phép hội với sai luôn cho kết quả sai)

Lý thuyết tập hợp

Phép hội có mối liên hệ chặt chẽ với phép giao trong lý thuyết tập hợp: một phần tử thuộc giao AB khi và chỉ khi nó thuộc cả A lẫn B, tức là xAB(xA)(xB).[2] Nhờ sự tương ứng này, phép hội thỏa mãn nhiều đẳng thức giống phép giao tập hợp:

¬(AB)¬A¬B

Quy tắc suy diễn

Trong logic hình thức, nhập đề hội (conjunction introduction) là quy tắc suy diễn cho phép kết hợp hai tiền đề thành một phép hội: nếu A đúng và B đúng, thì AB đúng. Ngược lại, xuất đề hội (conjunction elimination) cho phép rút ra từng thành phần từ một phép hội: nếu AB đúng, thì A đúng và B đúng.[3]

Phủ định

Để chứng minh AB là sai, chỉ cần chỉ ra ¬A hoặc ¬B:[3]

¬A¬(AB)

Điều này có nghĩa là không cần biết giá trị chân lý của cả hai toán hạng—chỉ cần biết mối quan hệ giữa chúng là đủ. Cụ thể, nếu A kéo theo ¬B, thì dù A đúng hay sai, phép hội đều sai:[3]

(A¬B)¬(AB)

Ứng dụng trong khoa học máy tính

Phép toán thao tác bit

Trong lập trình hệ thống, phép hội bit (bitwise AND) được dùng phổ biến để tắt (chuyển giá trị thành 0) các bit trong một số nhị phân bằng mặt nạ bit (bit mask): khi AND một giá trị với một mặt nạ, các bit tương ứng với vị trí 0 trong mặt nạ sẽ bị tắt về 0, trong khi các bit còn lại giữ nguyên.[4] Ví dụ, để tắt tất cả các bit trừ bit cuối cùng của một số nguyên x:

x = x & 0b00000001

Kỹ thuật này được dùng rộng rãi trong lập trình nhúng và lập trình hệ thống để đọc cờ trạng thái (flags) riêng lẻ.[4] Trong mạng máy tính, mặt nạ bit được dùng để tính địa chỉ mạng của một mạng con từ một địa chỉ IP cho trước bằng cách AND địa chỉ IP với mặt nạ mạng con.

Toán tử logic trong lập trình

Nhiều ngôn ngữ lập trình phân biệt phép hội bit và phép hội logic bằng hai toán tử khác nhau. Trong các ngôn ngữ theo truyền thống C, phép hội bit dùng toán tử & (một dấu và), còn phép hội logic dùng && (hai dấu và).

Phép hội logic thường được đánh giá ngắn mạch (short-circuit evaluation): nếu toán hạng bên trái đã có giá trị sai, toán hạng bên phải sẽ không được tính toán vì kết quả đã được xác định chắc chắn là sai.[4]

Trong SQL, phép hội được dùng để kết hợp nhiều điều kiện lọc trong truy vấn cơ sở dữ liệu. Ở ví dụ dưới đây, cơ sở dữ liệu sẽ trả về tất cả người dùng (users) trên 18 tuổi và đang trực tuyến:[5]

SELECT * FROM users WHERE online = 1 AND age >= 18

Ngôn ngữ tự nhiên

Trong ngôn ngữ học, từ "và" thường được dùng để biểu đạt phép hội, nhưng không phải lúc nào cũng mang ý nghĩa logic thuần túy. Câu "Họ kết hôn và có con" trong ngôn ngữ thông thường ngầm chỉ thứ tự thời gian (kết hôn xảy ra trước khi có con) trong khi phép hội logic không hàm chứa thứ tự nào giữa các mệnh đề. Tương tự đối với quan hệ không gian, câu "Lá cờ Mỹ có màu đỏ, trắng và xanh" không có nghĩa là lá cờ có tất cả ba màu cùng một lúc ở cùng một chỗ, mà mỗi màu là một phần của lá cờ.[2]

Tham khảo

  1. ^ Weisstein, Eric W. "Conjunction". MathWorld — A Wolfram Web Resource (bằng tiếng Anh). Truy cập ngày 28 tháng 5 năm 2026.
  2. ^ a b c d e Howson, Colin (1997). Logic with trees: an introduction to symbolic logic. London; New York: Routledge. tr. 38. ISBN 978-0-415-13342-5.
  3. ^ a b c Magnus, P. D.; Button, Tim; Thomas-Bolduc, Aaron; Zach, Richard (2023). forall x: Calgary. An Introduction to Formal Logic (bằng tiếng Anh). Open Logic Project (xuất bản ngày 2 tháng 9 năm 2023). ISBN 9798859963584.
  4. ^ a b c Bryant, Randal E.; O'Hallaron, David Richard (2011). Computer systems: a programmer's perspective (ấn bản thứ 2). Boston, Mass.: Prentice Hall. ISBN 978-0-13-610804-7.
  5. ^ Ramakrishnan, Raghu; Gehrke, Johannes (2003). Database Management Systems (ấn bản thứ 3). New York: McGraw-Hill. ISBN 978-0-07-246563-1.