偶校验位计算器 - 二进制错误检测
为二进制数据传输生成偶校验位,并可即时验证收到的二进制字符串是否存在单比特错误。
输入二进制数据即可计算其偶校验位和传输字符串,或粘贴收到的数据来检查是否存在传输错误。
偶校验位计算器 - 二进制错误检测
为二进制数据传输生成偶校验位,并可即时验证收到的二进制字符串是否存在单比特错误。
关于偶校验位计算器
校验是一种最古老、也最广泛部署的数字通信错误检测机制。每当二进制数据穿过有噪声的信道——串行电缆、存储总线、网络链路或存储介质——单个比特都可能因电磁干扰、宇宙辐射或硬件故障而损坏。校验位是在一段数据后附加的一个额外比特,用来让接收端检查是否发生了损坏。
偶校验是校验的一种形式,它要求合并后的序列——数据位加校验位——中 1 的总数始终为偶数。规则很简单:先统计原始数据中的 1。如果这个数量已经是偶数,校验位就设为 0;如果数量是奇数,校验位就设为 1,使总数变为偶数。用数学术语来说,校验位就是所有数据位的 XOR(异或)结果——硬件电路只需纳秒级即可完成这一运算。
举个具体例子:假设你要发送四位数据 1010。这个字包含恰好两个 1,本来就是偶数,因此偶校验位为 0。完整的传输字符串是 10100。接收端会把全部五位做异或:1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 0 = 0。结果为 0 说明 1 的总数是偶数,因此不会标记错误。再假设传输途中有一位损坏,字符串变成 11100。接收端异或:1 ⊕ 1 ⊕ 1 ⊕ 0 ⊕ 0 = 1。非零的异或结果意味着 1 的总数是奇数,说明五位帧中的某处发生了错误。
偶校验与奇校验的区别只在于目标总数:前者要求偶数,后者要求奇数。两者都能以 100% 的可靠性检测任何单比特错误,因为翻转一个比特会把奇偶性从偶变奇,或从奇变偶。但如果同时翻转了偶数个比特,两者都会静默失败,因为两次翻转会相互抵消,校验结果保持不变。对于必须处理多比特错误的场景,工程师通常会使用更强的编码,如 CRC(循环冗余校验)、汉明码或 Reed-Solomon 码。
在所有数据位都为 0 时,偶校验常常比奇校验更受欢迎,因为它更容易满足协议一致性。对于奇校验,全 0 数据字的校验位总是 1,从而保证传输中总有一个非零位。对于偶校验,全 0 数据字会得到全 0 传输,这在某些初始化或握手协议中很有用。采用偶校验还是奇校验,通常由所实现的通信标准规定。
偶校验的实际应用包括 UART 串行通信(其中校验模式是可配置选项)、一些为每个字节额外存储一个校验位的旧式存储系统,以及某些网络帧协议。现代高速链路通常会使用更强大的错误检测与纠错编码,但偶校验在资源受限的嵌入式系统中仍然很有价值,也是计算机科学和数字电子课程中的基础概念。
这个计算器会自动完成偶校验计算的每一步:验证输入是否完全由二进制数字组成,统计 1 的数量,确定正确的偶校验位,并输出完整的传输字符串。可选的验证字段允许你粘贴收到的字符串(包括校验位),并立即判断偶校验检查是否通过。
偶校验位示例
下表展示了几个二进制输入的偶校验位计算方式。
| 二进制数据 | 校验位 | 传输字符串 |
|---|---|---|
| 1010 | 0 | 两个 1(偶数)→ 校验位 = 0。传输:10100 |
| 1110 | 1 | 三个 1(奇数)→ 校验位 = 1。传输:11101 |
| 11001100 | 0 | 四个 1(偶数)→ 校验位 = 0。传输:110011000 |
| 10110100 | 0 | 四个 1(偶数)→ 校验位 = 0。传输:101101000 |
| 11111111 | 0 | 八个 1(偶数)→ 校验位 = 0。传输:111111110 |
如何使用偶校验位计算器
- 在二进制数据字段中输入要传输的二进制字符串——只能使用 0 和 1,不要有空格或分隔符。
- 点击“计算偶校验位”,即可查看 1 的数量、所需的偶校验位以及完整的传输字符串。
- 复制传输字符串(原始数据加上追加的校验位)并发送给接收端。
- 要验证收到的数据,请将完整的收到字符串(包含校验位)粘贴到收到的数据字段中,然后点击“计算”——工具会检查 1 的总数是否为偶数。
- 点击“重置”可清除所有字段并开始新的计算。
偶校验位计算器常见问题
什么是偶校验?
偶校验是一种错误检测方案,它会在二进制数据后附加一个校验位,使合并后的字符串(数据加校验位)中的 1 的总数始终为偶数。如果数据中已有偶数个 1,则校验位为 0;如果为奇数,则校验位为 1,以使总数变成偶数。
偶校验位是如何计算的?
偶校验位等于所有数据位的 XOR(异或)结果。当 1 的数量为奇数时,XOR 结果为 1;当为偶数时,结果为 0。因此,对于数据 1010(两个 1,已经是偶数),XOR 结果为 0,校验位也为 0。对于数据 1110(三个 1,奇数),XOR 结果为 1,校验位也为 1。
偶校验和奇校验有什么区别?
偶校验要求 1 的总数为偶数;奇校验要求其为奇数。两者都能检测任何单比特错误。主要的实际区别在于,奇校验能保证全 0 数据字对应的校验位非零,有助于检测“卡在 0”故障。若协议要求使用零值填充字节保持一致的帧格式,则可能更偏好偶校验。
偶校验能检测所有错误吗?
不能。偶校验可以可靠检测任何单比特错误,因为翻转一个比特会使奇偶性从偶变奇。然而,如果恰好同时翻转两个比特,奇偶性仍然为偶,错误就不会被检测到。若需要更强的保护,请使用 CRC、汉明码或 Reed-Solomon 纠错码。
偶校验在实际中用于哪里?
偶校验用于 UART 串行通信(其中校验模式是可配置设置)、一些旧式内存模块,以及某些网络帧协议。它也是计算机科学和数字电子课程中的基础教学工具,因为它能以极低的数学复杂度说明错误检测原理。
验证检查是怎么工作的?
要验证收到的数据,请在“收到的数据”字段中输入完整的收到字符串——原始数据加上追加的校验位。计算器会统计收到字符串中 1 的总数。如果数量为偶数,则满足偶校验,不会标记错误;如果为奇数,则检测到单比特错误(或任意奇数个错误)。