因此,我了解奇偶校验位,但是就我的代码而言,我不知道如何实现它。在我的课上,这是我们正在使用的代码,当它没有被存储在任何地方时,我似乎无法弄清楚如何将奇偶校验位添加到二进制数的开头,而每一位都只是在打印去。我希望这是有道理的。
这是我的代码的一部分:
#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");
}
}
我不是在寻找实际答案,我只是希望有人可以为我提供一些指导,谢谢!
最佳答案
假设奇偶校验位必须使字节的偶数为1位:保持计数打印的1位的数目,并且当总数为BITS-1时,检查计数是否为奇数。如果是,则发出“ 1”,否则发出零。
这将附加奇偶校验位,通常在此之前添加奇偶校验位。如果需要,请首先添加一个循环以确定奇偶校验位,将其打印并执行当前的for循环。