微商城网站建设流程方案互联网推广好做吗
文章目录
- 参考
- 描述
- 奇校验与偶校验
- 错误检测技术
- 奇偶校验
- 奇校验与偶校验
- 奇校验
- 偶校验
- 局限性
- 漏网之鱼
- 奇偶校验的三种形式
- 水平奇偶校验
- 垂直奇偶校验
- 水平垂直奇偶校验
- 优劣
- 漏网之鱼
参考
项目 | 描述 |
---|---|
搜索引擎 | Google 、Bing |
百度百科 | 奇偶校验 |
计算机网络 基础与应用(微课版) | 孟敬 著 |
描述
项目 | 描述 |
---|
奇校验与偶校验
错误检测技术
错误检测技术是数字通信领域中非常重要的一项技术,主要用于检测在数据传输过程中可能出现的错误,保证数据的可靠性。常见的错误检测技术包括奇偶校验、循环冗余校验(CRC)、海明码等。
奇偶校验
奇偶校验是一种简单的错误检测技术,常用于数字通信中。奇偶校验的基本思想是在数据中添加一个(通常情况下,在添加该比特位后,该数据的大小为一个字节,即八比特)额外的比特位(奇偶校验位),使得数据中比特位为 1 的个数能够满足奇偶性的要求。
奇校验与偶校验
奇校验
在需要传输的数据中添加一个奇偶校验位,使得整个数据中 1 的个数为 奇数。 发送方在发送数据前计算奇偶校验位,并将其添加到数据包中。
接收方在接收到数据包后,重新计算奇偶校验位,如果计算得到的校验位与发送方发送的校验位不同(发送的数据中,1 的个数为 偶数),则说明在传输过程中出现了错误。
举个栗子
数据位 | 奇校验位 | 数据 |
---|---|---|
0010100 | 1 | 00101001 |
1101010 | 1 | 11010101 |
1010111 | 0 | 10101110 |
偶校验
在传输的数据中添加一个奇偶校验位,使得整个数据中 1 的个数为 偶数。 发送方在发送数据前计算奇偶校验位,并将其添加到数据包中。
接收方在接收到数据包后,重新计算奇偶校验位,如果计算得到的校验位与发送方发送的校验位不同(发送的数据中,1 的个数为 奇数),则说明在传输过程中出现了错误。
举个栗子
数据位 | 偶校验位 | 数据 |
---|---|---|
0010100 | 0 | 00101000 |
1101010 | 0 | 11010100 |
1010111 | 1 | 10101111 |
局限性
漏网之鱼
在数据(包括 校验位)中存在奇数个错误时,奇校验与偶校验能够检测出数据发生了变化。但是,如果有偶数个错误时,那么它们会互相抵消,使得数据块中 1 的个数仍然符合奇偶性要求,这时奇偶校验就无法检测出这些错误了,这意味着从理论上来说,奇校验或偶校验仅有 50% 的几率能够检测到错误(但大多数情况是仅存在单个比特位存在差错或者没有差错)。
当数据中存在偶数个错误时,奇偶校验中可能发生的抵消情况可以用如下三个公式表示:
- 数据中增加了两个相同的二进制位(0 或 1)。
n + 2 n = 3 n n + 2n = 3n n+2n=3n
- 数据中减少了两个相同的二进制位。
3 n − 2 n = n 3n - 2n = n 3n−2n=n
- 数据中增加和减少一个不同的二进制位。
3 n − n + n = 3 n 3n -n +n = 3n 3n−n+n=3n
奇偶校验的三种形式
水平奇偶校验
水平奇偶校验的原理是将要发送的数据分为含有 p 位的 q 段数据,对每一个段中的数据位进行奇偶校验,产生一个奇偶校验位,通常放在段的最后一位,作为校验码传输。这种校验方式可以检测出数据的奇偶性是否正确,但无法检测出数据的具体错误位置,也无法纠正错误。
举个栗子
如下为一个示例表格,将大小为三个字节(即 24 bits)的数据划分为 8 位 3 段的数据位进行水平偶校验。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 校验位 |
---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
垂直奇偶校验
垂直奇偶校验的原理是将要发送的数据分为含有 p 位的 q 段数据,将每段数据中对应的比特位进行对齐,对每一个列中的数据进行奇偶校验,产生一个奇偶校验位,通常放在列的最后一位,作为校验码传输。这种校验方式可以检测出数据的奇偶性是否正确,但无法检测出数据的具体错误位置,也无法纠正错误。
举个栗子
如下为一个示例表格,将大小为三个字节(即 24 bits)的数据划分为 8 位 3 段的数据位进行垂直偶校验。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |
---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | |
校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
水平垂直奇偶校验
水平垂直奇偶校验可以看作是水平奇偶校验与垂直奇偶校验的结合。
举个栗子
如下为一个示例表格,将大小为三个字节(即 24 bits)的数据划分为 8 位 3 段的数据位进行水平垂直偶校验。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 水平校验位 | |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | |
垂直校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
优劣
漏网之鱼
水平垂直奇偶校验的基本思想是将数据划分成多个块,并分别计算每一行和每一列的奇偶校验位,然后将这些校验位一起发送给接收方。接收方在接收到数据后,也会分别计算每一行和每一列的奇偶校验位,然后将计算得到的校验位与发送方发送的校验位进行比较,从而检测数据中是否存在错误。
对于奇数个错误,水平垂直奇偶校验能够检测出所有的错误。 因为在这种情况下,必定会导致至少一行或一列的奇偶校验位与发送方的校验位不一致,从而被检测出来。
对于偶数个错误,水平垂直奇偶校验能够检测出大部分错误。 如果错误所处的行和列中存在偶数个(包括自身)错误,则错误将无法被检测出来。对此,请参考如下示例:
原数据
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 水平校验位 | |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
0 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | |
1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | |
垂直校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
错误数据
由于错误所导致的校验位变化相互抵消,致使发生错误的数据所计算出的检验位与原校验位一致。因此,奇偶校验机制并不能发现数据的变化。
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 水平校验位 | |
---|---|---|---|---|---|---|---|---|---|
1 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | |
0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | |
1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | |
垂直校验位 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
水平垂直奇偶校验相对于奇偶校验来说,虽然能够提供更好的错误检测能力,但它仍然存在一定的限制,不能保证检测所有的错误。