# Finding the Parity of a number Efficiently

Given an integer N. The task is to write a program to find the parity of the given number.

Note: Parity of a number is used to define if the total number of set-bits(1-bit in binary representation) in a number is even or odd. If the total number of set-bits in the binary representation of a number is even then the number is said to have even parity, otherwise, it will have odd parity.

Examples:

```Input : N = 13
Output : Odd Parity
Binary representation of 13 is (1101)

Input : N = 9 (1001)
Output : Even Parity
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

The parity of a number represented by 32-bits can be efficiently calculated by performing the following operations.

Let the given number be x, then perform the below operations:

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

Now, the rightmost bit in y will represent the parity of x. If the rightmost bit is 1, then x will have odd parity and if it is 0 then x will have even parity.

So, in order to extract the last bit of y, perform bit-wise AND operation of y with 1.

```if(y&1==1)
odd Parity
else
even Parity
```

Below is the implementation of the above approach:

## C++

 `// Program to find the parity of a given number ` `#include ` ` `  `using` `namespace` `std; ` ` `  `// Function to find the parity ` `bool` `findParity(``int` `x) ` `{ ` `    ``int` `y = x ^ (x >> 1); ` `    ``y = y ^ (y >> 2); ` `    ``y = y ^ (y >> 4); ` `    ``y = y ^ (y >> 8); ` `    ``y = y ^ (y >> 16); ` ` `  `    ``// Rightmost bit of y holds the parity value ` `    ``// if (y&1) is 1 then parity is odd else even ` `    ``if` `(y & 1) ` `        ``return` `1; ` `    ``return` `0; ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``(findParity(9)==0)?cout<<``"Even Parity\n"``: ` `                            ``cout<<``"Odd Parity\n"``; ` `     `  `    ``(findParity(13)==0)?cout<<``"Even Parity\n"``: ` `                            ``cout<<``"Odd Parity\n"``; ` `     `  `    ``return` `0; ` `} `

## Java

 `// Program to find the ` `// parity of a given number ` `import` `java.io.*; ` ` `  `class` `GFG  ` `{ ` ` `  `// Function to find the parity ` `static` `boolean` `findParity(``int` `x) ` `{ ` `    ``int` `y = x ^ (x >> ``1``); ` `        ``y = y ^ (y >> ``2``); ` `        ``y = y ^ (y >> ``4``); ` `        ``y = y ^ (y >> ``8``); ` `        ``y = y ^ (y >> ``16``); ` ` `  `    ``// Rightmost bit of y holds ` `    ``// the parity value ` `    ``// if (y&1) is 1 then parity  ` `    ``// is odd else even ` `    ``if` `((y & ``1``) > ``0``) ` `        ``return` `true``; ` `    ``return` `false``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `main (String[] args)  ` `{ ` `    ``if``((findParity(``9``) == ``false``)) ` `        ``System.out.println(``"Even Parity"``); ` `    ``else` `        ``System.out.println(``"Odd Parity"``); ` `     `  `    ``if``(findParity(``13``) == ``false``) ` `        ``System.out.println(``"Even Parity"``); ` `    ``else` `        ``System.out.println(``"Odd Parity"``); ` `} ` `} ` ` `  `// This Code is Contributed by chandan_jnu. `

## Python3

 `# Program to find the ` `# parity of a given number ` ` `  `# Function to find the parity ` `def` `findParity(x): ` `    ``y ``=` `x ^ (x >> ``1``); ` `    ``y ``=` `y ^ (y >> ``2``); ` `    ``y ``=` `y ^ (y >> ``4``); ` `    ``y ``=` `y ^ (y >> ``8``); ` `    ``y ``=` `y ^ (y >> ``16``); ` ` `  `    ``# Rightmost bit of y holds  ` `    ``# the parity value if (y&1) ` `    ``# is 1 then parity is odd ` `    ``# else even ` `    ``if` `(y & ``1``): ` `        ``return` `1``; ` `    ``return` `0``; ` ` `  `# Driver code ` `if``(findParity(``9``) ``=``=` `0``): ` `    ``print``(``"Even Parity"``); ` `else``: ` `    ``print``(``"Odd Parity\n"``); ` ` `  `if``(findParity(``13``) ``=``=` `0``): ` `    ``print``(``"Even Parity"``); ` `else``: ` `    ``print``(``"Odd Parity"``); ` `     `  `# This code is contributed by mits `

## C#

 `// Program to find the ` `// parity of a given number ` `using` `System; ` ` `  `class` `GFG  ` `{ ` ` `  `// Function to find the parity ` `static` `bool` `findParity(``int` `x) ` `{ ` `    ``int` `y = x ^ (x >> 1); ` `        ``y = y ^ (y >> 2); ` `        ``y = y ^ (y >> 4); ` `        ``y = y ^ (y >> 8); ` `        ``y = y ^ (y >> 16); ` ` `  `    ``// Rightmost bit of y holds ` `    ``// the parity value ` `    ``// if (y&1) is 1 then parity  ` `    ``// is odd else even ` `    ``if` `((y & 1) > 0) ` `        ``return` `true``; ` `    ``return` `false``; ` `} ` ` `  `// Driver code ` `public` `static` `void` `Main ()  ` `{ ` `    ``if``((findParity(9) == ``false``)) ` `        ``Console.WriteLine(``"Even Parity"``); ` `    ``else` `        ``Console.WriteLine(``"Odd Parity"``); ` `     `  `    ``if``(findParity(13) == ``false``) ` `        ``Console.WriteLine(``"Even Parity"``); ` `    ``else` `        ``Console.WriteLine(``"Odd Parity"``); ` `} ` `} ` ` `  `// This Code is Contributed  ` `// by chandan_jnu `

## PHP

 `> 1); ` `    ``\$y` `= ``\$y` `^ (``\$y` `>> 2); ` `    ``\$y` `= ``\$y` `^ (``\$y` `>> 4); ` `    ``\$y` `= ``\$y` `^ (``\$y` `>> 8); ` `    ``\$y` `= ``\$y` `^ (``\$y` `>> 16); ` ` `  `    ``// Rightmost bit of y holds  ` `    ``// the parity value if (y&1) ` `    ``// is 1 then parity is odd ` `    ``// else even ` `    ``if` `(``\$y` `& 1) ` `        ``return` `1; ` `    ``return` `0; ` `} ` ` `  `// Driver code ` `(findParity(9) == 0) ?  ` ` ``print``(``"Even Parity\n"``): ` ` ``print``(``"Odd Parity\n"``); ` ` `  `(findParity(13) == 0) ?  ` `print``(``"Even Parity\n"``): ` `print``(``"Odd Parity\n"``); ` `     `  `// This Code is Contributed by mits ` `?> `

Output:

```Even Parity
Odd Parity
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.