在C ++中高效地找到数字的奇偶校验

在本教程中,我们将编写一个找到数字奇偶校验的程序。

通过使用xor右移运算符执行以下操作,我们可以有效地找到数字的奇偶校验。

int b;
b = n ^ (n >> 1);
b = b ^ (b >> 2);
b = b ^ (b >> 4);
b = b ^ (b >> 8);
b = b ^ (b >> 16);

如果结果的最后一位是1,则它是奇校验,否则是奇校验。

示例

让我们看一下代码。

#include <bits/stdc++.h>
using namespace std;
void findParity(int n) {
   int b;
   b = n ^ (n >> 1);
   b = b ^ (b >> 2);
   b = b ^ (b >> 4);
   b = b ^ (b >> 8);
   b = b ^ (b >> 16);
   if ((b & 1) == 0) {
      cout << "Even Parity" << endl;
   }
   else {
      cout << "Odd Parity" << endl;
   }
}
int main() {
   int n = 15;
   findParity(n);
   return 0;
}

输出结果

如果运行上面的代码,则将得到以下结果。

Even Parity