5 / 63 · 概念
XOR、XNOR:相同、不同与奇偶性
区分双输入 XOR 与多输入奇偶性,解释错误检测的局限。
课时内容可免费阅读,选课后可保存学习进度。
判断两个比特是否不同的逻辑门
XOR 在两个输入不同时输出 1;XNOR 在两个输入相同时输出 1。
OR 与 XOR 在 00、01、10 时相同,在 11 时不同。XOR 的符号比 OR 在输入侧多一条曲线;XNOR 还带有输出反相取反 将 0 变为 1、1 变为 0 的 NOT 运算。表达式上方的横线表示对其覆盖的整个表达式应用 NOT。了解更多圆圈。
| a | b | y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
三个及以上输入时,不是“恰好一个”
XOR 满足结合律,因此可以依次计算 。当输入中 1 的个数为奇数时,结果为 1。111 的结果也是 1,因此不能把“恰好一个输入为 1”的说法直接推广到多输入情况。
全加器的 sum 输出就是这种三输入奇偶性奇偶性 表示值为 1 的位数是奇数还是偶数。奇偶校验能检测奇数个位错误,但可能漏掉偶数个位错误。,cout 则表示 1 的个数是否至少为两个。在下方构造 111,可得到 sum=1、cout=1,整数和为 。
a + b + cin = sum + 2 × cout
奇偶校验能检测的错误类型有限
对于数据 ,偶校验位为 。将数据与 p 一起 XOR,结果为 0。传输中若有奇数个位翻转,总 XOR 变为 1,因而能检测出来。偶数个位翻转可能无法检测,而且单个奇偶校验位也不能定位错误。
判断两个位串是否相同
要判断向量 A 和 B 是否相同,可将各位 XOR 的结果用 OR 汇总。
只要有一个不匹配位,OR 就为 1。将整体取反,只有所有位都相同时才输出 1。若实现为“把各位 XOR 的结果再全部 XOR 就能判断相等”,两个不匹配位会相互抵消,造成错误。
自己试试
当 A=1010、B=1001 时,求 XOR 位串与相等比较结果。若对 XOR 位串再做 XOR 归约来判断“相等”,会出现什么问题?
阅读解释
XOR 位串为 0011,相等结果为 0。将两个不匹配位 XOR 会相互抵消为 0,再取反便错误地得到相等=1。因此应对不匹配位做 OR 归约。