奇偶校验位计算器

为二进制数据计算偶校验或奇校验位,并验证接收数据是否存在单比特传输错误。

输入二进制数据,选择偶校验或奇校验,即可立即得到校验位、完整传输字符串,以及可选的接收数据验证结果。

奇偶校验位计算器
为二进制数据计算偶校验或奇校验位,并验证接收数据是否存在单比特传输错误。

关于奇偶校验位计算器

错误检测是可靠数字通信的基石。只要数据通过有噪声的信道传输——无论是 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、二维码等存储介质。 这个计算器在一个界面中同时支持两种校验类型。它会验证输入是否为二进制,计算校验位,生成传输字符串,并可通过检查总 1 的数量是否符合预期规则来验证接收字符串。

校验位示例

针对不同二进制输入的偶校验与奇校验位计算。

二进制数据校验位(偶 / 奇)传输字符串
10100(偶)/ 1(奇)两个 1:偶校验 → 0;要得到奇数总数 → 1
11101(偶)/ 0(奇)三个 1:需要偶数总数 → 1;已经是奇数 → 0
110011000(偶)/ 1(奇)四个 1(偶数):偶校验 = 0;奇校验 = 1
101101000(偶)/ 1(奇)四个 1(偶数):偶校验 = 0(已为偶数);奇校验 = 1(使总数为奇数)
11111111(偶)/ 0(奇)七个 1(奇数):偶校验 = 1;奇校验 = 0

如何使用奇偶校验位计算器

  1. 在“二进制数据”字段中输入二进制字符串——只接受 0 和 1。
  2. 在“校验类型”选择器中选择“偶校验”或“奇校验”。
  3. 点击“计算”即可查看校验位、1 的总数以及完整的传输字符串。
  4. 可选地,将接收字符串(数据 + 校验位)粘贴到“接收数据”中,以根据所选校验规则进行验证。
  5. 点击“重置”可清空所有字段并开始新的计算。

常见问题

什么是校验位?
校验位是附加在一段二进制数据末尾的单个比特。它的取值会被设置为使合并后的序列中 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 内存和数据存储应用。