奇偶校验

Posted Just_for_Myself

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了奇偶校验相关的知识,希望对你有一定的参考价值。

题目截图:

 

思路:

  先求出字符的 ASCII 码,然后将 ASCII 码转换成七位二进制数,最后根据二进制数 1 的个数进行奇偶校验。

  

 

代码如下:

 1 /*
 2     奇偶校验 
 3 */
 4 
 5 #include <stdio.h>
 6 #include <string.h>
 7 #include <math.h>
 8 #include <stdlib.h>
 9 #include <time.h>
10 #include <stdbool.h>
11 
12 int asc[8] = {0};                // 存储 ascii 码的二进制数 
13 // 将 ascii 转换成相应的二进制数 
14 void trans(int ascii) {
15     int i, k=0;
16     for(i=0; i<8; ++i) {        // 初始化 
17         asc[i] = 0;
18     }
19     while(ascii != 0) {            // 将 ascii 转换成二进制数,倒置 
20         asc[k++] = ascii%2;
21         ascii/=2;
22     }
23 }
24 
25 int main() {
26     char str[101];
27     while(scanf("%s", str) != EOF) {
28         int i, j, ans=0;
29         for(i=0; i<strlen(str); ++i) {        // 遍历每个字符 
30             int ascii = str[i]-\'\\0\';        // 计算 ascii 码,十进制 
31             trans(ascii);                    // 转换成二进制 
32             ans = 0;                        // ans 储存二进制中 1 的个数 
33             for(j=0; j<8; ++j) {
34                 ans += asc[j];
35             }
36             if(!(ans%2)) {                    // 奇校验 
37                 asc[7] = 1;
38             }
39             for(j=7; j>=0; --j) {            // 按要求输出 
40                 printf("%d", asc[j]);
41             }
42             printf("\\n");
43         }
44     } 
45 
46     return 0;
47 }

 

以上是关于奇偶校验的主要内容,如果未能解决你的问题,请参考以下文章

FPGA/数字IC手撕代码6——数据奇偶校验

奇偶校验

奇偶校验

串口奇偶校验

常用校验码(奇偶校验,海明校验,CRC)学习总结

计算奇偶校验