所以我理解奇偶校验位,但就我的代码而言,我不知道如何实现它。在我的课堂上,这是我们正在使用的代码,我似乎无法弄清楚如何将奇偶校验位添加到二进制数的开头,而不是存储在任何地方,每个位都在被打印出来。我希望这是有道理的。
这是我的代码的一部分:
#include <stdio.h>
#define BITS 2
int main(void)
{
int choice;
char ch;
int asciiChar;
char end;
int in;
printf("What type of display do you want?\n");
printf("Enter 1 for character parity, 2 for integer checksum: ");
scanf("%d", &choice);
if(choice == 1)
{
printf("Enter a character for parity calculation: ");
scanf(" %c", &ch);
int x = ch, i;
int mask = 1 << sizeof(int) * BITS - 1;
printf("x = %d\n", x);
printf("Character: %c, ", ch);
printf("Bit representation: ");
for(i = 1; i <= sizeof(int) * BITS; i++)
{
if(x & mask)
putchar('1');
else
putchar('0');
x <<= 1;
if(!(i % 8))
{
putchar(' ');
}
}
printf("\n");
}
}
我没有找到实际的答案,我只是希望有人能给我一些指导,谢谢!
答案 0 :(得分:1)
假设奇偶校验位必须使该字节具有偶数1位:保持打印的1位数的计数,当总数为BITS-1时,检查计数是否为奇数。如果是,则发出&#39; 1&#39;否则发出零。
这会附加奇偶校验位,通常位于奇偶校验位之前。如果需要,首先添加一个循环以确定奇偶校验位,打印它并执行当前的for循环。