在 C 中添加奇偶校验位
Adding a parity bit in C
所以我了解奇偶校验位,但就我的代码而言,我不知道如何实现它。在我的 class 中,这是我们正在使用的代码,我似乎无法弄清楚如何在二进制数未存储在任何地方时将奇偶校验位添加到二进制数的开头,每一位都只是正在打印。我希望这是有道理的。
这是我的部分代码:
#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 循环。
所以我了解奇偶校验位,但就我的代码而言,我不知道如何实现它。在我的 class 中,这是我们正在使用的代码,我似乎无法弄清楚如何在二进制数未存储在任何地方时将奇偶校验位添加到二进制数的开头,每一位都只是正在打印。我希望这是有道理的。
这是我的部分代码:
#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 循环。