In this tutorial, we are going to write a program that finds the parity of a number.
We can find the parity of a number efficiently by performing the following operations using xor and right-shift operators.
int b; b = n ^ (n >> 1); b = b ^ (b >> 2); b = b ^ (b >> 4); b = b ^ (b >> 8); b = b ^ (b >> 16);
If the last bit of the result is 1 then it's an odd parity else even parity.
Let's see the code.
#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; }
If you run the above code, then you will get the following result.
Even Parity
If you have any queries in the tutorial, mention them in the comment section.