如何在 c# 上添加奇偶校验位

本文关键字:奇偶 偶校验 添加 | 更新日期: 2023-09-27 17:58:52

请帮忙,我希望 c# 一旦出现就想出这个

请输入 7 位二进制数:

0010011

带有奇偶校验位的数字是:

00100111 

这是我想出的代码,可能是错误的,请您纠正一下吗?没事吧?

{
   Console.WriteLine("Please enter a 7- bit binary number");
   string number = Console.ReadLine();
   int count1 = 0;
   int count2 = 0;
   for(int i = 0; i < number.Length; i++)
   {
      count1++;
   }
   else 
   {
       count2++;
   }
   if (count1 < count2) 
      Console.WriteLine("Your number with parity bit is "+ number+ "1");
}
else
{ 
    Console.WriteLine("Your number with parity bit is "+ number + "0");
}
    }
}

}

提前感谢帮助

如何在 c# 上添加奇偶校验位

这应该可以做到:

Console.WriteLine("Please enter a 7- bit binary number");
string number = Console.ReadLine();
int count = 0;
for(int i = 0; i < number.Length; i++)
{
   if(number[i] == '1')
   {
      count++;
   }
}
Console.WriteLine("Your number with parity bit is "+ number + (count % 2).ToString());

我想这超出了你目前的水平,但这应该也有效:

Console.WriteLine("Please enter a 7- bit binary number");
string number = Console.ReadLine();
string parityBit = (number.Where(c => c == '1').Count() % 2).ToString();
Console.WriteLine("Your number with parity bit is "+ number + parityBit);

因此,奇偶校验位指示输入是否具有偶数个位。因此,如果您的输入字符串是二进制的(您通常不应该安全地假设,但我们现在将忽略它(,您只需计算二进制字符串中的1数即可。

按照你最初的想法(我认为?(,你可以这样做:

int numberOfOnes = 0;
for (int i = 0; i < bitstring.length; i++)
{
    if (bitstring[i] == '1')
        numberOfOnes++;
}
if (numbersOfOnes % 2 == 0)
    // even number of ones
else
    // uneven number of ones
请注意,奇偶校验

位有两个不同版本,具体取决于奇偶校验是否为偶数,1是否有0。你选择哪个取决于你。

算法:

  1. 将字符串转换为整数。
  2. 找到奇偶校验位值。
  3. "追加"奇偶校验位值到源整数 =>结果整数。
  4. 将结果整数转换为字符串,并将字符串写入输出。

源代码:

Console.Write("Please enter a 7-bit binary number: ");
string numberString = Console.ReadLine();
// Convert to integer representation.
int number = Convert.ToInt32(numberString, 2);
// Find parity bit value for the integer.
bool parity = false;
int tempNumber = number;
while (tempNumber > 0)
{
    parity ^= tempNumber % 2 != 0;
    tempNumber >>= 1;
}
// "Append" parity bit.
int numberWithParity = number << 1 | (parity ? 1 : 0);
// Convert the result to string representation.
numberString = Convert.ToString(numberWithParity, 2).PadLeft(8, '0');
Console.WriteLine("Your number with parity bit is {0}", numberString);