在C中添加奇偶校验位

时间:2016-10-19 22:03:43

标签: c parity

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

这是我的代码的一部分:

#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 个答案:

答案 0 :(得分:1)

假设奇偶校验位必须使该字节具有偶数1位:保持打印的1位数的计数,当总数为BITS-1时,检查计数是否为奇数。如果是,则发出&#39; 1&#39;否则发出零。

这会附加奇偶校验位,通常位于奇偶校验位之前。如果需要,首先添加一个循环以确定奇偶校验位,打印它并执行当前的for循环。