跳去內容

奇偶檢測

出自維基百科,自由嘅百科全書

奇偶檢測[1]粵拼gei1 ngau5 gim2 caak1英文parity check)係一種數據通訊用到嘅簡單嘅錯誤偵測技巧;原理係將數據睇成一大串位元(亦即係當佢做二進制數字),然後斬件,之後逐件睇(例如逐個位元組睇),數下入面有幾多個 1(個結果係奇數偶數奇偶性[1]parity),再加一個附加嘅位元,務求加咗附加位元之後,一係有奇數嘅 1,一係有偶數嘅 1,而呢個附加嘅位元就叫奇偶檢驗位[1]parity bit[2]:86

接收方收到數據之後,就會撇除收到嘅奇偶檢驗位,自己再做一次奇偶檢測,睇下奇偶檢驗位應該係乜,如果同收到嘅奇偶檢驗位一樣,就假定收到嘅嘢冇問題,如果唔夾,就肯定收到咗無效數據;不過如果遇到嘅情形係後者,接收方都只係知道數據無效,而唔會知邊度錯咗[2]:87。另外,如果有數量係偶數嘅錯誤發生咗,奇偶檢測亦唔會測到有問題[2]:88

將數據斬件有兩個方法,最明顯嘅方法係將數據就咁切開,例如每8個位元切一刀,又或者每256個位元切一刀咁,呢種方法叫縱向冗餘檢測[暫譯](VRC,vertical redundancy check),另一個方法係首先將數據分成某個大細嘅段落(block;例如每8位元一段,又或者每256個位元一段咁),然後每段相同位置嘅位元當成一個單元,呢種方法叫横向冗餘檢測[暫譯](LRC,longitudinal redundancy check[2]:86

無論係縱向定横向冗餘檢測,頂多都只能夠偵測錯誤,但係如果兩種方法一齊用,喺某嘅情況下可以更正錯誤[2]:86–88

應用

[編輯]

奇偶檢測喺串行通訊常見,用嘅係縱向冗餘檢測,以前用 ASCII 嘅年代,7位元嘅 ASCII 碼好多時都會附加奇偶檢驗位,凑夠8個位元一個位元組[2]:86

並行通訊亦有時會用奇偶檢測,例如 SCSI 通常都會做奇偶檢測[3]

奇偶檢測未必用喺通訊,亦用喺儲存,例如佢用咗喺 RAID-5RAID-6[4],同 ECC RAM[5],不過呢啲應用都唔係純粹係奇偶檢測,而係用某種演算法將佢變成可以更正錯誤。

[編輯]

假設用統一碼UCS-2 形式,但係低位元組行先(little endian,例如微軟視窗),再假設8個位元一組,如果訊息係 「粵語」,即係 U+7CB5 U+8A9E,實際表示方法十六進制 B5 7C 9E 8A,二進制 1011,0101 0111,1100 1001,1110 1000,1010,咁嘅話:

位元組 位元 奇偶性
(VRC)
7 6 5 4 3 2 1 0
0 1 0 1 1 0 1 0 1
1 0 1 1 1 1 1 0 0
2 1 0 0 1 1 1 1 0
3 1 0 0 0 1 0 1 0
奇偶性
(LRC)

假設用8位元嘅頻道傳輸7位元嘅 ASCII 數據,數據單元係字元,而且奇偶檢測位嵌入字元嘅位元7(每位元組嘅第八位元);如果要傳輸嘅字串係 「Yue」,佢嘅 ASCII 碼係十六進制 57 75 65,二進制 101,1001 111,0101 110,0101。咁嘅話:

  • 如果協議係奇偶性要係奇數(odd parity),實際傳輸嘅會係 1101,1001 0111,0101 1110,0101,即係十六進制 D7 75 E5
  • 如果協議係奇偶性要係偶數(even parity),實際傳輸嘅會係 0101,1001 1111,0101 0110,0101,即係十六進制 57 F5 65

[編輯]
  1. 1.0 1.1 1.2 (PDF) (香港中文). 香港特別行政區政府教育局課程發展處科技教育組. 2023年1月. 喺2023年10月30號搵到.
  2. 2.0 2.1 2.2 2.3 2.4 2.5 Carne, E. Bryan (1995). Telecommunications Primer (美國英文). Prentice Hall; IEEE Press. ISBN 0-13-490426-5.
  3. "Interface Circuits for SCSI" (design notes) (美國英文). Texas Instruments. November 1998. 喺2023年10月31號搵到.
  4. Plank, James S. (2008). The RAID-6 Liberation Codes (PDF). FAST ’08: 6th USENIX Conference on File and Storage Technologies (美國英文). 喺2023年10月31號搵到.
  5. Harding, Scharon (December 31, 2020). "What Is ECC Memory in RAM? A Basic Definition" (美國英文). Tom’s Hardware. 喺2023年10月31號搵到.

[編輯]