同位位元(英語:Parity bit)或核對位元check bit)是一個表示給定位數的二進制數中1的個數是奇數還是偶數二進制數。同位位元是最簡單的錯誤檢測碼

7位資料
(1的個數)
帶有核對位元的位元組
偶核對位元 奇核對位元
0000000(0) 00000000 00000001
1010001(3) 10100011 10100010
1101001(4) 11010010 11010011
1111111(7) 11111111 11111110

類型

編輯

同位位元有兩種類型:偶核對位元奇核對位元

偶核對位元來說,如果一組給定資料位中1的個數是奇數,補一個bit為1,使得總的1的個數是偶數。例:0000001, 補一個bit為1, 00000011。

奇核對位元來說,如果給定一組資料位中1的個數是奇數,補一個bit為0,使得總的1的個數是奇數。例:0000001, 補一個bit為0, 00000010。

偶核對實際上是迴圈冗餘核對的一個特例,通過多項式 x + 1 得到1位CRC

錯誤檢測

編輯

如果傳輸過程中包括校驗位在內的奇數個數據位發生改變,那麼奇偶校驗位將出錯表示傳輸過程有錯誤發生。因此,奇偶校驗位是一種錯誤檢測碼,但是由於沒有辦法確定哪一位出錯,所以它不能進行錯誤校正。發生錯誤時必須扔掉全部的數據,然後從頭開始傳輸數據。在雜訊很多的媒介上成功傳輸數據可能要花費很長的時間,甚至根本無法實現。但是奇偶校驗位也有它的優點,它是使用一位數據能夠達到的最好的校驗碼,並且它僅僅需要一些互斥或門就能夠生成。參見漢明碼中關於其它錯誤校正碼的描述。

使用

編輯

由於它很簡單,所以同位位元用於許多電腦硬體中,遇到麻煩時能夠重新操作或者通過簡單的錯誤檢測就能起到很大作用的場合。例如SCSI匯流排使用同位位元檢測傳輸錯誤,許多微處理器的指令高速緩衝記憶體中也包括同位位元保護。因為指令快取資料是主主記憶體資料的副本,所以在發現錯誤的時候能夠拋棄錯誤資料並且重新取回資料。

序列通訊中,常用的格式是7個資料位、1個核對位元、1到2個停止位。這種格式用方便的8位元位元組巧妙地適應了所有的7位ASCII字元。也可以用其它的格式表示,8位元資料加上1個核對位元可以傳輸任意的8位元位元組資料。

在序列通訊中,同位位元通常是由UART這樣的介面硬體生成、核對的,在接收方,通過介面硬體中的暫存器的狀態位傳給CPU以及作業系統。錯誤資料的恢復通常是通過重新傳送資料,這個過程通常由如作業系統輸入輸出程式這樣的軟體處理的。

同位塊

編輯

一些容錯式磁碟陣列(RAID)使用同位塊實現冗餘。如果陣列中的一塊磁碟出現故障,工作磁碟中的資料塊與同位塊一起來重建遺失的資料。

下面的圖表每列表示一個磁碟,假設A1 = 00000111、A2 = 00000101以及A3 = 00000000。A1、A2、A3 互斥或得到的Ap等於00000010。如果第二個磁碟出現故障,A2將不能被訪問,但是可以通過A1、A3與Ap的互斥或進行重建:

A1 XOR A3 XOR Ap = 00000101

       冗餘磁碟陣列
 A1        A2        A3
 Ap        B1        B2
 Bp        C1        C2
 C3        C4        Cp

[註 1]

注釋

編輯
  1. ^ 資料塊是格式A#,同位塊是Ap。