什么是奇校验位?
校验位(parity bit)是附加在一段二进制数据后面的一个额外比特,用于实现最基础的错误检测。在奇校验方式下,校验位的取值要保证 1 的总数——也就是数据位中的 1 加上校验位本身——始终为奇数。本计算器会统计你输入的二进制字符串中 1 的个数,并输出满足奇校验规则所需的校验位(0 或 1)。
如何使用本计算器
输入你的二进制数据串(仅包含字符 0 和 1)。计算器会统计其中 1 的个数。如果这个个数本身已经是奇数,则校验位为 0(无需改变);如果个数为偶数,则校验位为 1,这样加上它之后总数就变成奇数。
公式详解
设数据中 1 的个数为 \(k\)。奇校验位的计算公式为 $$P = (k + 1) \bmod 2$$ 换句话说,当 \(k\) 为偶数时 \(P = 1\),当 \(k\) 为奇数时 \(P = 0\)。最终发送的码字就是在原始数据后面附加 \(P\),从而保证 1 的总数为奇数。
实例演示
以数据 1011001 为例。统计其中的 1:出现 1 的位有 1、1、1、1,共 4 个 1,是偶数。要让总数变为奇数,就需要再补一个 1,所以校验位为 1。完整码字为 10110011,其中共有 5 个 1(奇数)。如果数据是 1011000(3 个 1,本身已是奇数),那么校验位就为 0。
常见问题
奇校验和偶校验有什么区别? 偶校验让 1 的总数为偶数,奇校验则让其为奇数。本工具采用的是奇校验。
校验位能检测出所有错误吗? 单个校验位可以检测出任意奇数个比特翻转,但无法检测偶数个错误,也无法定位或纠正错误。
校验位用在哪些场景? 校验位常见于串行通信(如 UART)、内存系统,以及许多简单的数据完整性检查中。