奇偶校驗位計算器
為二進位資料計算偶校驗或奇校驗位,並驗證接收資料是否存在單位元傳輸錯誤。
輸入二進位資料,選擇偶校驗或奇校驗,即可立即取得校驗位、完整傳輸字串,以及可選的接收資料驗證結果。
奇偶校驗位計算器
為二進位資料計算偶校驗或奇校驗位,並驗證接收資料是否存在單位元傳輸錯誤。
關於奇偶校驗位計算器
錯誤偵測是可靠數位通訊的基礎。只要資料透過有雜訊的通道傳輸——不論是 USB 線、Wi‑Fi 連線、硬碟讀寫磁頭,還是長距離衛星連線——位元在傳輸途中遭到損壞的機率始終存在。奇偶校驗是捕捉這類錯誤最簡單的機制之一。雖然它歷史悠久,但在嵌入式系統、序列通訊協定以及電腦科學教學中仍然很重要。
校驗位是一個附加在資料區塊末尾的單一位元。它的值會被選定,使得整個區塊中的 1 位元總數(包含校驗位本身)符合特定規則。在偶校驗下,規則是 1 的總數必須為偶數;在奇校驗下,規則是 1 的總數必須為奇數。傳送端先依規則套用並傳送資料與校驗位,接收端再重新計算 1 的數量。如果計數違反規則,就表示至少有一個位元已遭損壞。
計算偶校驗位時,先統計原始資料中的 1。如果數量已經是偶數,校驗位就是 0(不需要額外的 1)。如果數量是奇數,校驗位就是 1(把總數補成偶數)。奇校驗的邏輯相反:如果數量已經是奇數,校驗位為 0;如果數量是偶數,校驗位為 1。
偶校驗範例:data = 1011。它包含 3 個 1,為奇數。要讓總數變成偶數,偶校驗位 = 1。傳輸字串:10111。接收端統計到 4 個 1,為偶數,於是判定訊息有效。如果某一位翻轉,接收端收到 10110,統計到 3 個 1,為奇數,便會報錯。
奇校驗範例:data = 1011。包含 3 個 1,已經是奇數。為了保持總數為奇數,奇校驗位 = 0。傳輸字串:10110。接收端統計到 3 個 1,為奇數,於是判定有效。如果某一位翻轉,接收端收到 11110,統計到 4 個 1,為偶數,就會報錯。
偶校驗和奇校驗都能偵測任何單位元錯誤。它們都會漏掉兩個位元錯誤,因為翻轉兩個位元會保持奇偶性不變。若要更強的多位元錯誤偵測,工程師會使用更強大的編碼:漢明碼也能更正單位元錯誤;CRC(循環冗餘校驗)可偵測突發錯誤;Reed-Solomon 碼則用於 CD、QR Code 等儲存媒體。
這個計算器在一個介面中同時支援兩種校驗類型。它會驗證輸入是否為二進位,計算校驗位,產生傳輸字串,並可透過檢查總 1 的數量是否符合預期規則來驗證接收字串。
校驗位範例
針對不同二進位輸入的偶校驗與奇校驗位計算。
| 二進位資料 | 校驗位(偶 / 奇) | 傳輸字串 |
|---|---|---|
| 1010 | 0(偶)/ 1(奇) | 兩個 1:偶校驗 → 0;要得到奇數總數 → 1 |
| 1110 | 1(偶)/ 0(奇) | 三個 1:需要偶數總數 → 1;已經是奇數 → 0 |
| 11001100 | 0(偶)/ 1(奇) | 四個 1(偶數):偶校驗 = 0;奇校驗 = 1 |
| 10110100 | 0(偶)/ 1(奇) | 四個 1(偶數):偶校驗 = 0(已為偶數);奇校驗 = 1(使總數為奇數) |
| 1111111 | 1(偶)/ 0(奇) | 七個 1(奇數):偶校驗 = 1;奇校驗 = 0 |
如何使用奇偶校驗位計算器
- 在「二進位資料」欄位中輸入二進位字串——只接受 0 和 1。
- 在「校驗類型」選擇器中選擇「偶校驗」或「奇校驗」。
- 點擊「計算」即可查看校驗位、1 的總數以及完整的傳輸字串。
- 可選地,將接收字串(資料 + 校驗位)貼到「接收資料」中,以根據所選校驗規則進行驗證。
- 點擊「重設」可清空所有欄位並開始新的計算。
常見問題
什麼是校驗位?
校驗位是附加在一段二進位資料末尾的單一位元。它的值會被設定為讓合併後的序列中 1 的總數符合某種校驗規則——要麼為偶數(總 1 數為偶),要麼為奇數(總 1 數為奇)。它能讓接收端偵測單位元傳輸錯誤。
偶校驗和奇校驗有什麼差別?
偶校驗確保 1 的總數(資料 + 校驗位)為偶數;奇校驗則確保其為奇數。兩者都能同樣有效地偵測任何單位元錯誤。奇校驗有時更受青睞,因為當所有資料位都為 0 時,它能保證校驗位非零,有助於發現「卡在 0」的故障。
校驗可以偵測多位元錯誤嗎?
校驗可以偵測任意奇數個位元錯誤(1、3、5……),但會漏掉任意偶數個同時發生的錯誤(2、4……)。在實務上,雙位元錯誤雖然罕見但仍可能發生。若要更強的保護,可使用漢明碼、CRC 或 Reed-Solomon 碼。
奇偶校驗在真實系統中用在哪裡?
奇偶校驗用於 DRAM 記憶體(ECC 記憶體採用延伸校驗/漢明碼)、序列通訊(RS-232 與 RS-485 中的 UART 校驗位)、IDE 和 SCSI 儲存介面,以及許多嵌入式協定。它也是電腦科學與數位電子學課程中的基礎概念。
為什麼校驗位放在資料末尾?
這個計算器將校驗位附加在資料字串末尾,這是簡單框架格式中最常見的慣例。有些協定(例如某些 UART 組態)會把校驗位作為獨立的框架欄位。校驗位的位置不會影響錯誤偵測能力,只會影響協定框架。
校驗與漢明碼有什麼關係?
可以把漢明碼理解為一組多個校驗位,每個校驗位覆蓋資料位的不同子集。單一校驗位只能偵測錯誤,而漢明碼可以透過定位出錯位置來偵測並更正單位元錯誤。這使漢明碼廣泛用於 ECC 記憶體和資料儲存應用。