奇同位元計算器
為二進位資料產生奇同位元,並以單一位元錯誤偵測驗證資料完整性。
輸入二進位資料即可計算奇同位元、產生完整傳輸字串,並可選擇驗證收到的二進位字串。
奇同位元計算器
為二進位資料產生奇同位元,並以單一位元錯誤偵測驗證資料完整性。
關於奇同位元計算器
同位元檢查是數位資料中最古老、最廣泛使用的單一位元傳輸錯誤偵測技術之一。同位元是附加在一段二進位資料後面的額外一個位元。傳送端先根據資料計算同位元,再傳送擴充後的訊息,接收端則重新計算同位元以檢查是否有差異。
奇同位元的規則是:合併序列——資料位元加上同位元——中的 1 總數必須始終為奇數。若原始資料中的 1 已經是奇數,同位元設為 0(不需改變總數)。若資料中的 1 為偶數,同位元設為 1(將總數由偶數翻轉為奇數)。規則很簡單:計算資料中的 1,並選擇讓總數變成奇數的同位元。
舉個具體例子:假設你要傳送 1010。這個位元組剛好有兩個 1,屬於偶數。依照奇同位元規則,同位元必須是 1,因此完整傳輸字串為 10101。接收端計算 10101 中的 1,共有三個,屬於奇數,因此判定訊息無錯誤。若傳輸途中有一個位元翻轉,例如收到 11101,接收端會數出四個 1——偶數——並立刻標示發生錯誤。
奇同位元與偶同位元的差別只在於目標總數是奇數而非偶數。兩種方案都能偵測任何單一位元錯誤,因為翻轉一個位元會使同位元從奇變偶或從偶變奇。不過若同時翻轉兩個位元,兩者都會靜默失效,因為這會保留同位元不變。若應用需要偵測或更正多位元錯誤,工程師會改用更進階的編碼,例如漢明碼、CRC 或 Reed-Solomon。
儘管有其限制,奇同位元仍可在一些舊式序列通訊標準(包括較早的 RS-232 設定)、某些記憶體子系統,以及教學情境中見到。奇同位元有時也比偶同位元更受青睞,因為對於全 0 資料字,它一定會產生非零同位元,因此更容易偵測匯流排上的卡零故障。
這個計算器會自動完成每一步:移除空白字元、驗證輸入是否純二進位、計算 1 的數量、決定正確的奇同位元,並輸出可直接複製到系統中的完整傳輸字串。可選的驗證欄位可讓你貼上收到的字串(資料加上附加同位元),並立即查看總數是否為奇數(通過)或偶數(失敗,表示發生單一位元錯誤)。
奇同位元範例
下表顯示多個二進位輸入的奇同位元計算方式。
| 二進位資料 | 同位元 | 傳輸字串 |
|---|---|---|
| 1010 | 1 | 兩個 1(偶數)→ 同位元 = 1。傳輸:10101 |
| 1110 | 0 | 三個 1(奇數)→ 同位元 = 0。傳輸:11100 |
| 11001100 | 1 | 四個 1(偶數)→ 同位元 = 1。傳輸:110011001 |
| 10110100 | 1 | 四個 1(偶數)→ 同位元 = 1。傳輸:101101001 |
| 11111111 | 1 | 八個 1(偶數)→ 同位元 = 1。傳輸:111111111 |
如何使用奇同位元計算器
- 在「二進位資料」欄位輸入你要傳送的二進位字串(僅限 0 和 1)。
- 點擊「計算」,即可立即看到 1 的數量、所需的奇同位元,以及完整傳輸字串。
- 複製傳輸字串(資料 + 同位元)並傳送給接收端。
- 若要驗證收到的字串,請將其貼到「接收資料」欄位並點擊「計算」——工具會檢查 1 的總數是否為奇數。
- 點擊「重設」即可清除所有欄位並開始新的計算。
常見問題
什麼是奇同位元?
奇同位元是一種錯誤偵測機制,會在二進位資料中加入一個同位元,使合併後序列(資料 + 同位元)中的 1 總數始終為奇數。若資料中的 1 為奇數,同位元為 0;若為偶數,同位元為 1。
奇同位元和偶同位元有什麼差別?
偶同位元保證 1 的總數為偶數;奇同位元則保證為奇數。兩者都能偵測任何單一位元錯誤。奇同位元的優點是,全 0 訊息一定會有值為 1 的同位元,有助於偵測匯流排卡零故障。
同位元檢查能偵測所有錯誤嗎?
不能。同位元檢查可可靠偵測單一位元錯誤。如果兩個位元同時翻轉,同位元不會改變,錯誤就會被漏掉。若需要更強的錯誤偵測,請使用 CRC 或漢明碼。
奇同位元今天還用在哪裡?
奇同位元仍用於某些舊式序列通訊標準(如 RS-232)、較早的 UART 設定,以及某些記憶體模組。它也常用於教學,幫助學習錯誤偵測的基本概念。
同位元的位置如何決定?
在許多協定中,同位元會附加在傳輸框架的最後一位;不過也有標準會將其前置,或放在特定位置。這個計算器會將同位元附加在資料字串末尾,這是最常見的慣例。
全 0 資料的奇同位元是多少?
對於完全由 0 組成的資料,1 的數量為 0(偶數),因此奇同位元永遠是 1。這也是奇同位元有時較受青睞的原因之一——它能確保全 0 資料字不會以全 0 形式傳送,有助於偵測完全的訊號遺失。