C Program to Convert Binary Code to its Equivalent Gray’s Code

0

Method 1 – Using Recursion

#include <stdio.h>
 
int bintogray(int);
 
int main ()
 
{
 
    int bin, gray;
 
    printf("Enter a binary number: ");
 
    scanf("%d", &bin);
 
    gray = bintogray(bin);
 
    printf("The gray code of %d is %d\n", bin, gray);
 
    return 0;
 
}
 
int bintogray(int bin)
 
{
 
    int a, b, result = 0, i = 0;
 
     if (!bin)
 
    {
 
        return 0;
 
    }
 
    else
 
    {
 
        a = bin % 10;
 
        bin = bin / 10;
 
        b = bin % 10;
 
        if ((a && !b) || (!a && b))
 
        {
 
            return (1 + 10 * bintogray(bin));
 
        }
 
        else
 
        {
 
            return (10 * bintogray(bin));
 
        }
 
    }
 
}

Output

Enter a binary number:  1011101
The gray code of 1011101 is 1110011

Method 2

#include <stdio.h>
 
#include <math.h>
 
int bintogray(int);
 
int main ()
 
{
 
    int bin, gray;
 
    printf("Enter a binary number: ");
 
    scanf("%d", &bin);
 
    gray = bintogray(bin);
 
    printf("The gray code of %d is %d\n", bin, gray);
 
    return 0;
 
}
  
int bintogray(int bin)
 
{
 
    int a, b, result = 0, i = 0;
     
    while (bin != 0)
 
    {
 
        a = bin % 10;
 
        bin = bin / 10;
 
        b = bin % 10;
 
        if ((a && !b) || (!a && b))
 
        {
 
            result = result + pow(10, i);
 
        }
 
        i++;
 
    }
 
    return result;
 
}

Output

Enter a binary number: 1111001010
The gray code of 1111001010 is 1000101111

Leave a Reply

Your email address will not be published. Required fields are marked *