# Program to find parity

• Difficulty Level : Medium
• Last Updated : 21 Oct, 2021

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 odd number of 1-bits and is “even parity” if it contains even number of 1-bits.
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.

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

```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 = ``12``;``        ``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)
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