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:

- Using Right Shift Operator and While loop( Static Input)
- Using Right Shift Operator and While loop( User Input)

### 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**: