什麼是同位元(Parity Bit)?
同位元是附加在一串二進位資料後面的單一額外位元,用來進行最基本的錯誤偵測。它是歷史最悠久、成本也最低的檢查機制之一,廣泛應用於序列通訊(UART)、記憶體與儲存裝置。同位元的設定原則是:讓整串資料中 1 的總數(包含同位元本身)永遠維持偶數(偶同位)或永遠維持奇數(奇同位)。
如何使用本計算器
請輸入由 0 與 1 組成的二進位資料字串(例如 1011010)。任何非 0 或 1 的字元都會被自動忽略。計算器會統計資料中 1 的個數,接著同時告訴你應附加的偶同位元與奇同位元。
計算公式
首先統計 1 的個數,記為 ones。偶同位元就是 ones mod 2:若資料中 1 的數量已是偶數,同位元為 0;若為奇數,同位元為 1,使總數回到偶數。奇同位元則為其相反值 1 - (ones mod 2),強制讓 1 的總數維持奇數。
實例演算
以資料 1011010 為例,1 出現在第 1、3、4、6 個位置 → 共有 4 個 1。由於 \(4 \bmod 2 = 0\),因此偶同位元為 0(總數本來就是偶數)。而奇同位元為 1,這會讓 1 的總數變成五個——一個奇數。
常見問題
同位檢查能抓到哪些錯誤?同位元可偵測出奇數個位元被翻轉的情況(1、3、5……),但無法偵測偶數個錯誤,也無法修正錯誤。
偶同位與奇同位,哪一個比較好?就錯誤偵測能力而言,兩者並無優劣之分;採用哪一種純粹是收送雙方事先約定的慣例。部分系統偏好奇同位,因為這樣一來全為 0 的線路狀態就能被判定為錯誤。
同位元本身要算進去嗎?要。所謂同位,指的是資料中 1 的個數加上同位元後的總數,這也是公式以資料中 1 的個數作為基礎的原因。