因此,我了解奇偶校验位,但是就我的代码而言,我不知道如何实现它。在我的课上,这是我们正在使用的代码,当它没有被存储在任何地方时,我似乎无法弄清楚如何将奇偶校验位添加到二进制数的开头,而每一位都只是在打印去。我希望这是有道理的。

这是我的代码的一部分:

#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循环。

10-01 23:05