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 輸出就是這個三輸入同位值同位性(parity)表示值為 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 位元序列與 equality 結果。若再對 XOR 位元序列做 XOR 歸約來判斷「相等」,會有什麼問題?
查看解說
XOR 位元序列為 0011,相等結果為 0。兩個不相符位元經 XOR 會互相抵消成 0,再反相便錯誤得到相等=1。不相符位元應以 OR 歸約。