C Program to Convert Binary to Gray Code without Recursion

This C program converts a binary number to its corresponding Gray code using iterative methods.

Gray code, also known as reflected binary code, is a binary numeral system where adjacent values differ in only one bit position. It finds applications in various areas such as analog-to-digital converters, error detection, and rotary encoders. Unlike traditional binary representation, Gray code ensures that only one bit changes at a time during transitions between consecutive values.

Problem Statement

The program should allow the user to input a binary number and output its Gray code, as well as input a Gray code and output its corresponding binary number. The program should not use recursion for the conversion process.

Example:

Input: Enter a binary number: 1010

Output: Gray code: 523 Binary code: 1010

Note: The program should handle valid input values within the range of unsigned integers.

C Program to Convert Binary to Gray Code without Recursion

#include <stdio.h>

// Function to convert binary to gray code
unsigned int binaryToGray(unsigned int num)
{
    return (num >> 1) ^ num;
}

// Function to convert gray code to binary
unsigned int grayToBinary(unsigned int num)
{
    unsigned int mask;
    for (mask = num >> 1; mask != 0; mask = mask >> 1)
    {
        num = num ^ mask;
    }
    return num;
}

int main()
{
    unsigned int binary, gray;

    printf("Enter a binary number: ");
    scanf("%u", &binary);

    gray = binaryToGray(binary);
    printf("Gray code: %u\n", gray);

    binary = grayToBinary(gray);
    printf("Binary code: %u\n", binary);

    return 0;
}

How it Works

The C program works by implementing two functions: binaryToGray() and grayToBinary(), which handle the conversion between binary and Gray code.

  1. binaryToGray() Function:
    • It takes an unsigned integer num as input, which represents a binary number.
    • Inside the function, the binary-to-Gray conversion is performed using the following steps:
      • The num value is right-shifted by 1 (num >> 1), which moves all the bits one position to the right.
      • The result of the right shift is then XORed with the original num value (num ^ (num >> 1)).
      • The XOR operation between the shifted and original number generates the Gray code representation of the binary number.
    • The Gray code value is returned as the output of the function.
  2. grayToBinary() Function:
    • It takes an unsigned integer num as input, which represents a Gray code.
    • Inside the function, the Gray-to-binary conversion is performed using the following steps:
      • A mask variable is initialized as num >> 1, which shifts the num value one position to the right.
      • A loop is executed until the mask becomes zero:
        • Inside the loop, the num value is XORed with the mask (num ^ mask).
        • The result is stored back in the num variable.
        • The mask is right-shifted by 1 (mask = mask >> 1).
      • After the loop completes, the final num value represents the binary representation of the Gray code.
    • The binary code value is returned as the output of the function.
  3. main() Function:
    • The main() function is the entry point of the program.
    • It prompts the user to enter a binary number.
    • The binary number is read from the user using the scanf() function and stored in the variable binary.
    • The binaryToGray() function is called with the binary value to convert it to Gray code, and the result is stored in the variable gray.
    • The Gray code value is displayed as output using printf().
    • The grayToBinary() function is called with the gray value to convert it back to binary, and the result is stored in the variable binary.
    • The binary code value is displayed as output using printf().

The program follows the same process for each conversion scenario, allowing the user to input a binary number and obtain its corresponding Gray code, or input a Gray code and obtain its corresponding binary number.

Input /Output

C Program to Convert Binary to Gray Code without Recursion

Share:

Leave A Reply

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

You May Also Like

This C program finds the Greatest Common Divisor (GCD) of two given numbers. Problem Statement Write a C program that...
This C program calculates the roots of a quadratic equation of the form ax^2 + bx + c = 0....
This C program allows you to find the length of a linked list, which is the number of nodes present...