# Write a C program to find the parity of an unsigned integer

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.

## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

```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

```# include <stdio.h>
# 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".

```

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).

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.

# GATE CS Corner    Company Wise Coding Practice

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.
3.1 Average Difficulty : 3.1/5.0
Based on 26 vote(s)