当前位置: 首页 > 编程语言 > C#

7位二进制数如何加偶校验位分享

时间:2023-04-11 00:34:53 C#

7位二进制数如何加偶校验位继续上一题。我在做一个c#程序,用户输入一个7位的二进制数,计算机打印出这个数字右边有偶校验位的数字。我在挣扎。我有一个代码,但它说BitArray是一个命名空间,但用作一种类型。另外,有没有办法改进代码并使其更简单?namespaceBitArray{classProgram{staticvoidMain(string[]args){Console.WriteLine("请输入一个7位二进制数:");inta=Convert.ToInt32(Console.ReadLine());byte[]numberAsByte=newbyte[]{(byte)a};BitArray位=newBitArray(numberAsByte);整数计数=0;for(inti=0;i<8;i++){if(bits[i]){count++;}}if(count%2==1){bits[7]=true;}bits.CopyTo(numberAsByte,0);a=numberAsByte[0];Console.WriteLine("带校验位的二进制数是:");控制台.WriteLine(a);复制他们用来执行此操作的电路可能会更有趣。布尔奇数=假;for(inti=6;i>=0;i--)odd^=(number&(10;然后如果你想奇偶校验设置第7位为奇数,奇校验奇偶校验设置为非奇数。要么booleven=true;for(inti=6;i>=0;i--)even^=(number&(10;电路是doublefunctionreturn0and1or1and0,alsomorethan1atantimebit,but这对TPL来说有点轻......PS你可能想检查<128个输入,否则会出错。哦没注意到作业标签,除非你能解释它,否则不要使用它。使用BitArray购买这里还不如什么,如果有什么让你的代码更难理解的话。使用&和|运算符的基本位操作可以解决你的问题。例如,要找出某个数字是否设置在某个数字中,你可以和相应的数字幂为2。这导致:intbitsSet=0;for(inti=0;i<7;i++)if((number&(10)bitsSet++;现在唯一剩下的就是确定bitsSet是否为偶数或奇数,然后在必要时设置剩余的位。几乎相同的过程,只是在更多的位上更快。只使用算术运算符(SHR&&XOR),不带循环:以上是C#学习教程:如何给7位二进制数加上偶校验。C#学习教程,希望大家多多关注---publicstaticboolis_parity(intdata){//data^=data>>32;//ifarg>=64-bit(noticeargumentlength)//data^=data>>16;//ifarg>=32-bit//data^=data>>8;//如果arg>=16位数据^=数据>>4;数据^=数据>>2;数据^=数据>>1;返回(数据&1)!=0;}publicstaticbytefix_parity(bytedata){if(is_parity(data))返回数据;返回(字节)(数据^128);}收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: