Đèn cầu thang bật tắt được ở cả hai đầu là vì trạng thái của đèn bằng phép XOR (hoặc loại trừ) của hai công tắc, hay phép phủ định của nó là XNOR, tuỳ cách gọi vị trí công tắc. Tính chất then chốt của XOR là: đổi bất kỳ một đầu vào nào thì kết quả cũng lật ngược. Vì vậy dù ở đầu nào, gạt công tắc một cái là đèn đổi trạng thái.
Bài toán: một bóng đèn, hai nơi điều khiển
Hãy đặt yêu cầu bằng lời trước, đúng như kỹ sư làm: "Ở chân cầu thang hay ở đầu cầu thang, gạt công tắc thì đèn phải đổi trạng thái — đang tắt thành sáng, đang sáng thành tắt — bất kể công tắc kia đang ở vị trí nào."
Thử hai cách "nghĩ nhanh" thường gặp, và xem vì sao chúng hỏng:
| Cách nối | Phép logic | Chuyện gì xảy ra |
|---|---|---|
| Hai công tắc thường nối tiếp | AND (và) | Đèn chỉ sáng khi cả hai cùng bật. Người dưới bật, người trên đã tắt từ trước thì đèn vẫn tối — phải leo lên mới bật được. |
| Hai công tắc thường song song | OR (hoặc bao hàm) | Chỉ cần một cái bật là đèn sáng. Người lên tới nơi muốn tắt thì không tắt được nếu cái dưới vẫn bật. |
| Hai công tắc hai chiều | XOR hoặc XNOR | Gạt bất cứ cái nào, đèn cũng đổi trạng thái. Đây là cách đúng. |
Ký hiệu dùng trong bài: a, b là vị trí hai công tắc (1 = gạt lên, 0 = gạt xuống); L là đèn (1 = sáng, 0 = tắt); ⊕ là XOR, đọc "a hoặc b nhưng không cả hai"; dấu phẩy trên (a') là "không a".
Công tắc hai chiều hoạt động thế nào
Công tắc dùng cho cầu thang khác công tắc thường. Nó có ba cực: một cực chung, hai cực ra. Gạt lên thì cực chung nối với cực ra thứ nhất; gạt xuống thì nối với cực ra thứ hai. Nó không bao giờ "ngắt hẳn" mà luôn chọn một trong hai ngả.
Giữa hai công tắc có hai dây nối, mỗi dây nối một cực ra của công tắc này với một cực ra của công tắc kia. Nguồn điện vào cực chung của công tắc thứ nhất; bóng đèn nằm sau cực chung của công tắc thứ hai.
Dòng điện tới được đèn khi và chỉ khi hai công tắc chọn cùng một dây; chọn khác dây thì đường bị cụt.
Lưu ý an toàn: bài này chỉ giải thích nguyên lý logic. Đấu nối điện trong nhà có nguy cơ điện giật và chập cháy; việc lắp đặt, sửa chữa hãy để thợ điện có chuyên môn làm.
Bảng chân trị: XOR hay XNOR là do cách gọi tên
Giả sử gọi "gạt lên" ở cả hai công tắc là chọn dây thứ nhất. Khi đó đèn sáng khi hai công tắc cùng vị trí:
| a | b | Hai công tắc chọn | L = XNOR(a, b) |
|---|---|---|---|
| 0 | 0 | cùng dây thứ hai | 1 (sáng) |
| 0 | 1 | khác dây | 0 (tắt) |
| 1 | 0 | khác dây | 0 (tắt) |
| 1 | 1 | cùng dây thứ nhất | 1 (sáng) |
Nếu thợ lắp công tắc trên lộn ngược (gạt lên lại chọn dây thứ hai), cùng mạch ấy cho bảng ngược lại: đèn sáng khi a và b khác nhau, tức L = a ⊕ b. Cả hai cách đều đúng chức năng. Vì vậy câu chính xác là: trạng thái đèn là XOR hoặc XNOR của hai công tắc, tuỳ cách đấu và cách quy ước vị trí. Viết gọn: L = a ⊕ b ⊕ c₀, với c₀ là hằng số 0 hoặc 1 do cách lắp quyết định.
Vì sao gạt một cái là đèn đổi: chứng minh bằng logic
Ta cần chứng minh: nếu đổi a thành a' (giữ b nguyên) thì L đổi thành L'.
- Theo định nghĩa, a ⊕ b = 1 khi đúng một trong hai bằng 1.
- Đổi a thành a': nếu trước đó a và b khác nhau thì giờ chúng giống nhau, và ngược lại.
- "Khác nhau" thành "giống nhau" nghĩa là a ⊕ b từ 1 thành 0; "giống nhau" thành "khác nhau" nghĩa là từ 0 thành 1.
- Vậy a' ⊕ b = (a ⊕ b)'. Cộng thêm hằng c₀ không đổi điều này. Lập luận y hệt cho b.
Thử lại bằng giá trị cụ thể với L = a ⊕ b: đang a = 1, b = 0 thì L = 1 (sáng). Người trên gạt b thành 1: L = 1 ⊕ 1 = 0 (tắt). Người dưới gạt a thành 0: L = 0 ⊕ 1 = 1 (sáng lại). Mỗi lần gạt đúng một lần đổi.
Ba, bốn nơi điều khiển: XOR nhiều đầu vào và tính chẵn lẻ
Hành lang dài hay phòng ngủ có ba cửa cần điều khiển từ ba nơi. Lúc này hai đầu vẫn dùng công tắc hai chiều, còn mỗi vị trí ở giữa dùng một loại công tắc khác: công tắc đảo chiều (bốn cực). Nó nằm trên đường hai dây con thoi; ở một vị trí nó cho hai dây đi thẳng, ở vị trí kia nó cho hai dây bắt chéo nhau.
Mỗi lần bắt chéo là đổi vai "dây thứ nhất" với "dây thứ hai". Về logic, mỗi công tắc góp một phép ⊕:
L = a ⊕ b ⊕ c ⊕ c₀
Vì XOR có tính giao hoán và kết hợp, thứ tự không quan trọng. Và có một cách đọc rất gọn: a ⊕ b ⊕ c bằng 1 khi và chỉ khi số công tắc đang ở vị trí 1 là số lẻ. Đèn chỉ "đếm chẵn lẻ". Với n nơi điều khiển: hai công tắc hai chiều ở hai đầu cộng n − 2 công tắc đảo chiều ở giữa.
Kiểm bằng bảng cho ba công tắc (lấy c₀ = 0):
| a | b | c | Số công tắc ở vị trí 1 | L = a ⊕ b ⊕ c |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 (chẵn) | 0 |
| 0 | 0 | 1 | 1 (lẻ) | 1 |
| 0 | 1 | 0 | 1 (lẻ) | 1 |
| 0 | 1 | 1 | 2 (chẵn) | 0 |
| 1 | 0 | 0 | 1 (lẻ) | 1 |
| 1 | 0 | 1 | 2 (chẵn) | 0 |
| 1 | 1 | 0 | 2 (chẵn) | 0 |
| 1 | 1 | 1 | 3 (lẻ) | 1 |
Nhìn cột cuối: hai dòng kề nhau chỉ khác một công tắc thì luôn khác trạng thái đèn — đúng điều cầu thang cần.
Ba câu đố nhỏ quanh cái công tắc
Câu 1: bấm bao nhiêu lần
Hành lang có ba công tắc điều khiển một đèn. Sáng ra đèn tắt. Trong ngày, mọi người gạt tổng cộng 11 lần, không ai nhớ gạt cái nào. Tối đến đèn sáng hay tắt?
Lời giải. Mỗi lần gạt, dù ở công tắc nào, cũng lật đèn đúng một lần. 11 lần lật từ "tắt": sau số lần lẻ thì trạng thái ngược với ban đầu. Đèn sáng. Biết được mà không cần biết ai gạt cái nào — đó là sức mạnh của tính chẵn lẻ.
Câu 2: tìm vị trí còn lại
Với quy ước L = a ⊕ b ⊕ c (c₀ = 0), đèn đang sáng, a = 1, b = 1. Công tắc c ở vị trí nào?
Lời giải. 1 ⊕ 1 = 0, nên L = 0 ⊕ c = c. Đèn sáng nên c = 1. Kiểm: ba công tắc đều ở 1, số lẻ, đèn sáng — khớp.
Câu 3: thợ lắp lộn một công tắc
Ở nhà hai công tắc, khi cả hai cùng gạt xuống thì đèn sáng. Hỏi khi cả hai cùng gạt lên thì sao?
Lời giải. L = a ⊕ b ⊕ c₀. Với a = b = 0 thì L = c₀ = 1. Khi a = b = 1: L = 1 ⊕ 1 ⊕ 1 = 1. Đèn vẫn sáng. Nhà này đang theo kiểu XNOR: hai công tắc cùng phía là sáng.
XOR ở khắp nơi trong máy tính
Cái tính chất "đổi một đầu vào là kết quả lật" làm XOR trở thành phép toán được ưa dùng bậc nhất:
- Bit chẵn lẻ: khi truyền 7 bit dữ liệu, máy thêm bit thứ 8 sao cho tổng số bit 1 là chẵn (bit đó chính là XOR của 7 bit kia). Bên nhận XOR cả 8 bit; ra 1 nghĩa là có một bit bị lật trên đường. Giống hệt đèn cầu thang báo "có số lẻ lần gạt".
- Bộ cộng: chữ số tổng của 1 bit cộng 1 bit chính là XOR (1 + 1 = 10 ở hệ nhị phân, chữ số hàng đơn vị là 0 = 1 ⊕ 1).
- Mã hoá đơn giản: vì m ⊕ k ⊕ k = m, XOR một thông điệp với khoá rồi XOR lần nữa với cùng khoá thì ra lại thông điệp. Ví dụ: 1011 ⊕ 0110 = 1101; rồi 1101 ⊕ 0110 = 1011, đúng chuỗi ban đầu.
Viết XOR bằng ba phép cơ bản: a ⊕ b = a·b' + a'·b — "a mà không b, hoặc b mà không a". Trong lời nói, đây là "hoặc" loại trừ kiểu "trà hoặc cà phê, chọn một"; phần khác biệt giữa "hoặc" loại trừ và bao hàm trong tiếng Việt có bài riêng ở danh mục logic trong lời nói.
Bài tập
- Bốn công tắc điều khiển một đèn, c₀ = 0, vị trí lần lượt 1, 0, 1, 1. Đèn sáng hay tắt? — Đáp án: ba công tắc ở 1, số lẻ, đèn sáng.
- Cần điều khiển một đèn từ 5 nơi. Cần mấy công tắc hai chiều và mấy công tắc đảo chiều? — Đáp án: 2 công tắc hai chiều ở hai đầu, 3 công tắc đảo chiều ở giữa.
- Tính 1100 ⊕ 1010. — Đáp án: 0110 (so từng bit: 1⊕1 = 0, 1⊕0 = 1, 0⊕1 = 1, 0⊕0 = 0).
- Vì sao hai công tắc thường nối song song không làm được đèn cầu thang? — Đáp án: song song là OR; khi một công tắc đang bật thì gạt cái kia không làm đèn tắt, tức không phải mọi lần gạt đều lật trạng thái.
- Chứng minh a ⊕ a = 0 và a ⊕ 0 = a bằng cách thử a = 0 và a = 1. — Đáp án: 0⊕0 = 0, 1⊕1 = 0; 0⊕0 = 0, 1⊕0 = 1.
Dùng vào đâu
- Khi học Kỹ thuật số: đèn cầu thang là ví dụ dễ nhớ nhất cho XOR; nhớ nó là nhớ được bảng chân trị.
- Khi lập trình: toán tử ^ trong C, Java, Python là XOR theo bit; dùng nó cho bit chẵn lẻ, bật tắt cờ trạng thái (flag ^= 1 lật cờ).
- Trong nhà: hiểu nguyên lý giúp mô tả đúng mong muốn với thợ điện ("muốn điều khiển từ ba chỗ"), nhưng đừng tự đấu nối.
- Đọc tiếp: bài bộ cộng nhị phân trong cùng danh mục, nơi XOR làm ra chữ số tổng.
Câu hỏi thường gặp
Đèn cầu thang hai công tắc là phép XOR hay XNOR?
Cả hai đều có thể, tuỳ cách đấu dây và cách gọi vị trí "lên/xuống" của từng công tắc. Nếu đèn sáng khi hai công tắc cùng phía thì đó là XNOR; sáng khi khác phía thì là XOR. Về chức năng, cả hai đều cho phép gạt một công tắc bất kỳ để đổi trạng thái đèn.
Công tắc hai chiều khác công tắc thường thế nào?
Công tắc thường có hai cực, chỉ đóng hoặc ngắt. Công tắc hai chiều có ba cực: một cực chung luôn được nối với một trong hai cực ra, nên nó "chọn ngả" chứ không ngắt hẳn. Hai công tắc hai chiều nối với nhau bằng hai dây mới làm được đèn cầu thang.
Điều khiển một đèn từ ba nơi thì cần gì?
Cần hai công tắc hai chiều ở hai đầu và một công tắc đảo chiều (bốn cực) ở giữa. Về logic, trạng thái đèn là XOR của cả ba công tắc, tức phụ thuộc vào số công tắc ở vị trí "1" là chẵn hay lẻ.
XOR là gì?
XOR (hoặc loại trừ) của hai giá trị cho kết quả 1 khi đúng một trong hai bằng 1, và 0 khi hai giá trị bằng nhau. Với nhiều đầu vào, XOR cho 1 khi số đầu vào bằng 1 là số lẻ.
Có nên tự lắp đèn cầu thang theo sơ đồ trên mạng không?
Không nên nếu không có chuyên môn. Điện lưới có thể gây giật, và đấu sai có thể gây chập cháy. Hiểu nguyên lý để trao đổi với thợ là đủ; việc lắp đặt hãy thuê thợ điện.