# Python Program to Convert Gray Code to Binary

Although binary numbers are the most common way to store numbers, they can be challenging to use in many situations, necessitating the usage of a binary number variant. This is where Gray codes come in handy.

Gray code has the property that two consecutive numbers differ in just one bit. Because of this quality, grey code cycles through multiple states with low effort and is used in K-maps, error correction, communication, and so on.

Gray Code is a type of minimum-change coding in which the two subsequent values differ by only one bit. More specifically, it is a binary number system in which only a single bit varies while travelling from one step to the next.

We will learn how to convert gray to binary code in Python in this tutorial. A binary number is a number written in the base-2 numeral system. As a result, a binary number is made up of only 0s and 1s. So, today, we’ll learn how to represent binary and gray code numbers, how to convert a gray number to binary code, and how to use a Python program to convert a gray number to binary code.

Examples:

Example1:

Input:

given gray code =1001000010

Output:

The Binary string of the given gray code= 1001000010 is 1110000011

Example2:

Input:

given gray code =1000111100110

Output:

The Binary string of the given gray code= 1000111100110 is 1111010111011

## Program to Convert Gray Code to Binary in Python

Below are the ways to convert the given gray code to binary number in python:

### Method #1:Using Right Shift Operator and  While loop( Static Input)

Approach:

• Give the binary number as static.
• The grayToBin has been defined.
• It accepts as an argument the Gray codeword string.
• It returns the binary number connected with it as a string.
• If g(i) is the ith bit in the Gray codeword and b(i) is the ith bit in the corresponding binary number, where the 0th bit is the MSB, g(0) = b(0) and b(i) = g(i) XOR b(i – 1) for I > 0.
• Based on the preceding, b(i) = g(i) XOR g(i – 1) XOR… XOR g (0).
• Thus, a Gray codeword g can be translated to its corresponding binary number by doing (g XOR (g >> 1) XOR (g >> 2) XOR… XOR (g >> m)), where m is such that g >> (m + 1) equals 0.

Below is the implementation:

# function which accepts the gray code  and returns the binary code  of the gray code
def grayToBin(grayCde):
# Converting the given gray code to integer
graynum = int(grayCde, 2)
# Taking a temporary variable which stores the the gray code integer number
tempnum = graynum
# using while loop
while tempnum != 0:
tempnum >>= 1
graynum ^= tempnum

# bin(n) returns n's binary representation with the prefix '0b' removed
# the slice operation removes the prefix.
return bin(graynum)[2:]

# given gray code as static
graycode = "1001000010"
# passing this graycode to grayToBin function
resultbin = grayToBin(graycode)
print('The Binary string of the given gray code=', graycode, 'is', resultbin)


Output:

The Binary string of the given gray code= 1001000010 is 1110000011

### Method #2:Using Right Shift Operator and  While loop( User Input)

Approach:

• Scan the gray code string using input() function.
• The grayToBin has been defined.
• It accepts as an argument the Gray codeword string.
• It returns the binary number connected with it as a string.
• If g(i) is the ith bit in the Gray codeword and b(i) is the ith bit in the corresponding binary number, where the 0th bit is the MSB, g(0) = b(0) and b(i) = g(i) XOR b(i – 1) for I > 0.
• Based on the preceding, b(i) = g(i) XOR g(i – 1) XOR… XOR g (0).
• Thus, a Gray codeword g can be translated to its corresponding binary number by doing (g XOR (g >> 1) XOR (g >> 2) XOR… XOR (g >> m)), where m is such that g >> (m + 1) equals 0.

Below is the implementation:

# function which accepts the gray code  and returns the binary code  of the gray code
def grayToBin(grayCde):
# Converting the given gray code to integer
graynum = int(grayCde, 2)
# Taking a temporary variable which stores the the gray code integer number
tempnum = graynum
# using while loop
while tempnum != 0:
tempnum >>= 1
graynum ^= tempnum

# bin(n) returns n's binary representation with the prefix '0b' removed
# the slice operation removes the prefix.
return bin(graynum)[2:]

# given gray code as static
graycode = input("Enter some random gray code string = ")
# passing this graycode to grayToBin function
resultbin = grayToBin(graycode)
print('The Binary string of the given gray code=', graycode, 'is', resultbin)


Output:

Enter some random gray code string = 1000111100110
The Binary string of the given gray code= 1000111100110 is 1111010111011

Related Programs: