如何在 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");
}
}
}
}
提前感谢帮助
这应该可以做到:
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
。你选择哪个取决于你。
算法:
- 将字符串转换为整数。
- 找到奇偶校验位值。
- "追加"奇偶校验位值到源整数 =>结果整数。
- 将结果整数转换为字符串,并将字符串写入输出。
源代码:
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);