Decimal Equivalent of Gray Code and its Inverse
Given a decimal number n. Find the gray code of this number in decimal form.
Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.
Input : 7
Output : 4
Explanation: 7 is represented as 111 in binary form. The equivalent gray code
of 111 is 100 in binary form, whose decimal equivalent is 4.
Input : 10
Output : 15
Explanation: 10 is represented as 1010 in binary form. The equivalent gray code
of 1010 is 1111 in binary form, whose decimal equivalent is 15.
The following table shows the conversion of binary code values to gray code values:
Decimal Value Binary Equivalent Gray Code Equivalent Decimal Value of Gray Code Equivalent 0 000 000 0 1 001 001 1 2 010 011 3 3 011 010 2 4 100 110 6 5 101 111 7 6 110 101 5 7 111 100 4
Below is the approach for the conversion of decimal code values to gray code values.
Let G(n) be the Gray code equivalent of binary representation n. Consider bits of a number n and a number bit G(n). Note that the leftmost set bits of both n and G(n) are in the same position. Let this position be i and positions on the right of it be (i+1), (i+2), etc. The (i + 1)th bit in G(n) is 0 if (i+1)th bit in n is 1 and vice versa is also true. The same is true for (i+2)-th bits, etc. Thus we have G (n) = n xor (n >> 1):
Finding the Inverse Gray Code
Given a decimal equivalent number n of a gray code. Find its original number in decimal form.
Input : 4
Output : 7
Input : 15
Output : 10
Below is the approach for the conversion of gray code values to decimal code values.
We will go from the older bits to the younger ones (even the smallest bit has number 1, and the oldest bit is numbered k). We obtain such relations between the bits of the ni number n and the bits of the gi number g:
nk = gk, nk-1 = gk-1 xor nk = gk xor gk-1 nk-2 = gk-2 xor nk-1 = gk xor gk-1 xor gk-2 nk-3 = gk-3 xor nk-2 = gk xor gk-1 xor gk-2 xor gk-3 ...