C++ 程序快速查找一个数的奇偶校验


在本文中,我们将讨论一个程序,查找给定数字 N 的奇偶校验。

奇偶校验定义为一个数的二进制表示中设置的位(‘1’的个数)。

如果二进制表示中的‘1’的个数为偶数,则奇偶校验称为偶数,如果二进制表示中的‘1’的个数为奇数,则奇偶校验称为奇数。

如果给定的数是 N,我们可以执行以下操作。

  • y = N ^ (N >> 1)
  • y = y ^ (y >> 2)
  • y = y ^ (y >> 4)
  • y = y ^ (y >> 8)
  • y = y ^ (y >> 16)

一旦所有这些操作都完成,y 中最右边的位将表示该数的奇偶校验。如果该位为 1,则奇偶校验为奇数,如果该位为 0,则奇偶校验为偶数。

示例

 在线演示

#include <bits/stdc++.h>
using namespace std;
bool calc_parity(int N) {
   int y;
   y= N ^ (N >> 1);
   y = y ^ (y >> 2);
   y = y ^ (y >> 4);
   y = y ^ (y >> 8);
   y = y ^ (y >> 16);
   //checking the rightmost bit
   if (y & 1)
      return 1;
   return 0;
}
int main() {
   int n=1345;
   int result = calc_parity(n);
   if(result==1)
      cout << "Odd Parity" << endl;
   else
      cout << "Even Parity" << endl;
   return 0;
}

输出

Even Parity

更新于: 03-Oct-2019

1K+ 浏览次数

开启您的 事业

完成课程,获得认证

开始
广告