Altifigence Academy

5 / 63 · Khái niệm

XOR, XNOR: giống, khác và parity

Phân biệt XOR hai đầu vào với parity nhiều đầu vào và giải thích giới hạn phát hiện lỗi.

Cổng hỏi hai bit có khác nhau không

XOR bằng 1 khi hai đầu vào khác nhau; XNOR bằng 1 khi chúng giống nhau.

a⊕b=a‾b+ab‾,a⊕b‾=ab+a‾ b‾a\oplus b=\overline a b+a\overline b,\qquad \overline{a\oplus b}=ab+\overline a\,\overline b

OR và XOR giống nhau ở 00, 01, 10 nhưng khác ở 11. Ký hiệu XOR có thêm một đường cong trước ký hiệu OR; XNOR còn có vòng tròn đảoPhủ định Phép NOT đổi 0 thành 1 và 1 thành 0. Gạch trên biểu thức nghĩa là áp dụng NOT cho toàn bộ phần nằm dưới gạch. Tìm hiểu thêm ở đầu ra.

So sánh OR và XOR tại 11
XOR · Bảng chân trị
aby
000
011
101
110

Từ ba đầu vào trở lên, không phải “đúng một”

XOR có tính kết hợp, nên có thể tính lần lượt a⊕b⊕ca\oplus b\oplus c. Kết quả bằng 1 khi số đầu vào bằng 1 là số lẻ. 111 cũng cho 1, nên không thể mở rộng mô tả “đúng một đầu vào bằng 1” cho nhiều đầu vào.

Đầu ra sum của bộ cộng đầy đủ chính là tính chẵn lẻTính chẵn lẻ Giá trị cho biết số bit 1 là chẵn hay lẻ. Kiểm tra parity phát hiện số lẻ lỗi bit nhưng có thể bỏ sót số chẵn lỗi. ba đầu vào này; cout cho biết có ít nhất hai bit 1. Tạo 111 bên dưới: sum=1, cout=1 và tổng số nguyên là 1+2×1=31+2\times1=3.

Ba đầu vào: số lẻ khác biểu quyết đa số

a + b + cin = sum + 2 × cout

Parity chỉ phát hiện một số loại lỗi

Với dữ liệu d3d2d1d0=1011d_3d_2d_1d_0=1011, bit parity chẵn là p=d3⊕d2⊕d1⊕d0=1p=d_3\oplus d_2\oplus d_1\oplus d_0=1. XOR dữ liệu cùng p cho 0. Nếu số lẻ bit bị đảo trong truyền dẫn, XOR tổng đổi thành 1 nên phát hiện được. Số chẵn bit đảo có thể không bị phát hiện; một bit parity cũng không chỉ ra vị trí lỗi.

So sánh hai chuỗi bit có giống nhau không

Có thể kiểm tra A và B bằng nhau bằng cách OR các kết quả XOR theo từng bit.

equal=⋁i(Ai⊕Bi)‾equal=\overline{\bigvee_i(A_i\oplus B_i)}

Chỉ cần một bit không khớp thì OR bằng 1. Đảo toàn bộ sẽ cho 1 chỉ khi mọi bit đều khớp. Nếu dùng XOR để gộp tất cả kết quả XOR khi kiểm tra bằng nhau, hai bit không khớp có thể triệt tiêu nhau và gây sai.

Tự thử

Với A=1010, B=1001, tìm chuỗi XOR và kết quả equality. Điều gì sai nếu tiếp tục rút gọn chuỗi XOR bằng phép XOR để quyết định “bằng nhau”?

Đọc giải thích

Chuỗi XOR là 0011, kết quả bằng nhau là 0. XOR hai bit không khớp làm chúng triệt tiêu thành 0; đảo kết quả sẽ sai thành bằng nhau=1. Vì vậy phải rút gọn các bit không khớp bằng OR.

Lựa chọn áp dụng cho trình duyệt này. Có thể đổi ở chân trang bất cứ lúc nào.