# Program to find parity

• Difficulty Level : Medium
• Last Updated : 13 May, 2022

Parity: Parity of a number refers to whether it contains an odd or even number of 1-bits. The number has “odd parity” if it contains an odd number of 1-bits and is “even parity” if it contains an even number of 1-bits.
The main idea of the below solution is – Loop while n is not 0 and in loop unset one of the set bits and invert parity.

```Algorithm: getParity(n)
1. Initialize parity = 0
2. Loop while n != 0
a. Invert parity
parity = !parity
b. Unset rightmost set bit
n = n & (n-1)
3. return parity

Example:
Initialize: n = 13 (1101)   parity = 0

n = 13 & 12  = 12 (1100)   parity = 1
n = 12 & 11 = 8  (1000)   parity = 0
n = 8 & 7 = 0  (0000)    parity = 1```

Program:

## C++

 `// C++ program to find parity` `// of an integer` `# include` `# define bool int` `using` `namespace` `std;`   `// Function to get parity of number n. It returns 1` `// if n has odd parity, and returns 0 if n has even` `// parity ` `bool` `getParity(unsigned ``int` `n)` `{` `    ``bool` `parity = 0;` `    ``while` `(n)` `    ``{` `        ``parity = !parity;` `        ``n     = n & (n - 1);` `    ``}     ` `    ``return` `parity;` `}`   `/* Driver program to test getParity() */` `int` `main()` `{` `    ``unsigned ``int` `n = 7;` `    ``cout<<``"Parity of no "``<

## C

 `// C program to find parity` `// of an integer` `# include ` `# define  bool int`   `/* Function to get parity of number n. It returns 1` `   ``if n has odd parity, and returns 0 if n has even` `   ``parity */` `bool` `getParity(unsigned ``int` `n)` `{` `    ``bool` `parity = 0;` `    ``while` `(n)` `    ``{` `        ``parity = !parity;` `        ``n      = n & (n - 1);` `    ``}        ` `    ``return` `parity;` `}`   `/* Driver program to test getParity() */` `int` `main()` `{` `    ``unsigned ``int` `n = 7;` `    ``printf``(``"Parity of no %d = %s"``,  n, ` `             ``(getParity(n)? ``"odd"``: ``"even"``));` `    `  `    ``getchar``();` `    ``return` `0;` `}`

## Java

 `// Java program to find parity` `// of an integer` `import` `java.util.*;` `import` `java.lang.*;` `import` `java.io.*;` `import` `java.math.BigInteger;`   `class` `GFG` ` ``{` `    ``/* Function to get parity of number n.` `    ``It returns 1 if n has odd parity, and` `    ``returns 0 if n has even parity */` `    ``static` `boolean` `getParity(``int` `n)` `    ``{` `        ``boolean` `parity = ``false``;` `        ``while``(n != ``0``)` `        ``{` `            ``parity = !parity;` `            ``n = n & (n-``1``);` `        ``}` `        ``return` `parity;` `        `  `    ``}` `    `  `    ``/* Driver program to test getParity() */` `    ``public` `static` `void` `main (String[] args)` `    ``{` `        ``int` `n = ``7``;` `        ``System.out.println(``"Parity of no "` `+ n + ``" = "` `+` `                         ``(getParity(n)? ``"odd"``: ``"even"``)); ` `    ``}` `}` `/* This code is contributed by Amit khandelwal*/`

## Python3

 `# Python3 code to get parity.`   `# Function to get parity of number n. ` `# It returns 1 if n has odd parity, ` `# and returns 0 if n has even parity` `def` `getParity( n ):` `    ``parity ``=` `0` `    ``while` `n:` `        ``parity ``=` `~parity` `        ``n ``=` `n & (n ``-` `1``)` `    ``return` `parity`   `# Driver program to test getParity()` `n ``=` `7` `print` `(``"Parity of no "``, n,``" = "``,` `     ``( ``"odd"` `if` `getParity(n) ``else` `"even"``))`   `# This code is contributed by "Sharad_Bhardwaj".`

## C#

 `// C# program to find parity of an integer` `using` `System;`   `class` `GFG {` `    `  `    ``/* Function to get parity of number n.` `    ``It returns 1 if n has odd parity, and` `    ``returns 0 if n has even parity */` `    ``static` `bool` `getParity(``int` `n)` `    ``{` `        ``bool` `parity = ``false``;` `        ``while``(n != 0)` `        ``{` `            ``parity = !parity;` `            ``n = n & (n-1);` `        ``}` `        ``return` `parity;` `        `  `    ``}` `    `  `    ``// Driver code` `    ``public` `static` `void` `Main ()` `    ``{` `        ``int` `n = 7;` `        ``Console.Write(``"Parity of no "` `+ n ` `                 ``+ ``" = "` `+ (getParity(n)?` `                          ``"odd"``: ``"even"``)); ` `    ``}` `}`   `// This code is contributed by nitin mittal.`

## PHP

 ``

## Javascript

 ``

Output

`Parity of no 7 = odd`

Above solution can be optimized by using lookup table. Please refer to Bit Twiddle Hacks[1st reference] for details.
Time Complexity: The time taken by above algorithm is proportional to the number of bits set. Worst case complexity is O(Log n).
Auxiliary Space: O(1)

Another approach: (Using built-in-function)

## C++

 `// C++ program to find parity` `// of an integer` `# include` `# define bool int` `using` `namespace` `std;`   `// Function to get parity of number n. It returns 1` `// if n has odd parity, and returns 0 if n has even` `// parity ` `bool` `getParity(unsigned ``int` `n)` `{` `    ``return` `__builtin_parity(n);` `}`   `// Driver code` `int` `main()` `{` `    ``unsigned ``int` `n = 7;` `    ``cout<<``"Parity of no "``<

Output

`Parity of no 7 = odd`

Uses: Parity is used in error detection and cryptography.
Compute the parity of a number using XOR and table look-up

References:
http://graphics.stanford.edu/~seander/bithacks.html#ParityNaive – last checked on 30 May 2009.

My Personal Notes arrow_drop_up
Recommended Articles
Page :