奇偶校验位和错误检测

时间:2012-01-01 19:06:43

标签: c architecture assembly character-encoding

我在大学的计算机体系结构课程中遇到过这种情况。 我无法理解奇偶校验位;为什么它有两种偶数和奇数。

有人能给我清楚解释奇偶校验码吗?

2 个答案:

答案 0 :(得分:4)

'奇偶校验位'是一种错误检查方法。想象一下,您需要通过连接发送8位并确定它们是否正确通过。您可以尝试两次发送,这样如果出现错误,接收方就会知道,因为这两条消息不同。但是,这需要两倍的带宽,这太多了。因此,每个字节(8位)通常也会有一个奇偶校验位。你计算字节中的1的数量。如果是奇数,则奇偶校验位为1。如果是偶数,则奇偶校验位为零。这样,如果接收器将知道任何单个错误,则仅需要额外带宽的八分之一。例子:

Data: 01001001  3 ones, parity bit 1
Data: 00110101  4 ones, parity bit 0

如果接收方获得00111101和奇偶校验位0,它将知道存在一些损坏。

当然如果同一个字节中有两个错误,则无法检测到这一点 - 例如,如果原始文件是00000001并且收到的是00000010 - 但这被认为是非常罕见的不用担心大多数应用程序。

答案 1 :(得分:2)

Wikipedia article的第一句话已经足够清楚,第二段也是如此......但是哦,哦。

给定n位的字,n-1位用于检查奇偶校验和1位奇偶校验,奇偶校验位将设置为:

  • 1如果设置为1的位数是奇数,则否则为0(偶校验);
  • 如果设置为1的位数是偶数,则
  • 0,否则为1(奇校验)。

示例:1101011x其中x是奇偶校验位。有5位设置为1,因此奇数:x将设置为1(偶校验)或0(奇校验)。