Java >> Java tutorial >  >> Java

Java-program til at konvertere binær kode for et tal til dets ækvivalente Gray's-kode ved hjælp af rekursion

I denne tutorial lærer vi, hvordan man konverterer tallets binære kode til dets tilsvarende Grays kode ved hjælp af rekursion. Grå kode er et binært talsystem, hvor to på hinanden følgende værdier kun adskiller sig på én bit. En rekursiv funktion er en funktion, der kalder sig selv. Men før du går videre, hvis du ikke er bekendt med de grundlæggende begreber for metoder i java, så tjek artiklen om emnet metoder i java.

Input: Indtast det binære tal:1110

Output: Den tilsvarende grå kode er:1001

Program 1:Konverter binær kode for et tal til dets ækvivalente Gray's-kode ved hjælp af rekursion

I dette eksempel vil vi se, hvordan man konverterer tallets binære kode til dets tilsvarende Grays kode ved hjælp af rekursion, når tallet er inden for heltalsgrænsen.

Algorithme:

  1. Start
  2. Opret en forekomst af scannerklassen.
  3. Deklarer en variabel for at gemme det binære tal.
  4. Bed brugeren om at initialisere variablen.
  5. Erklær en brugerdefineret metode til at konvertere binær kode til grå kode.
  6. Hvis tallet er 0, så returner 0.
  7. Udtræk det sidste og næstsidste ciffer.
  8. Hvis de sidste to bits er modsatte af hinanden, så er grå =1 + (10 * binærTilGrå(tal/10)).
  9. Hvis de sidste to bits er ens, så er grå =10 * binærTilGrå(tal/10)
  10. Vis resultatet.
  11. Stop

Nedenstående eksempel illustrerer implementeringen af ​​ovenstående algoritme.

//Java Program to Convert Binary Code Into 
//Equivalent Gray Code Using Recursion
import java.util.*;
  
public class Main 
{
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the binary number: ");
        int bNumber = sc.nextInt();
        int res = bToGray(bNumber);
        System.out.println("Gray Code is " + res);
    }
     public static int bToGray(int num)
    {
        if (num == 0) 
        {
            return 0;
        }
        // Extracting the last digit
        int x1 = num % 10;
        // Extracting the second last digit
        int x2 = (num / 10) % 10;
        // Else If last two digits
        // are opposite bits to each other
        if ((x1 & ~x2) == 1 || (~x1 & x2) == 1) {
            return (1 + 10 * bToGray(num / 10));
        }
        // Else If the last
        // two bits are same
        return (10 * bToGray(num / 10));
    }
}


Indtast det binære tal:1101
Grå kode er 1011

Program 2:Konverter binær kode for et tal til dets ækvivalente Gray's-kode ved hjælp af rekursion

I dette eksempel vil vi se, hvordan man konverterer tallets binære kode til dets tilsvarende Grays kode ved hjælp af rekursion, når store binære tal indtastes.

Algorithme:

  1. Start
  2. Opret en forekomst af scannerklassen.
  3. Deklarer en variabel for at gemme det binære tal i strengformat.
  4. Bed brugeren om at initialisere variablen.
  5. Deklarer en brugerdefineret funktion til at finde xor for to tal.
  6. Kald rekursivt funktionen for at finde den grå kode for det indtastede nummer.
  7. Vis resultatet.
  8. Stop

Nedenstående eksempel illustrerer implementeringen af ​​ovenstående algoritme.

//Java Program to Convert Binary Code Into 
//Equivalent Gray Code Using Recursion
import java.util.*;
  
public class Main 
{
   public static char xor(char a, char b)
    {
        if (a == b)
            return '0';
        else
            return '1';
    }
    // Recursive function Gray code conversion
    public static char[] ans(char[] ch, String str, int i)
    {
        if (i == str.length())
            return ch;
        ch[i] = xor(str.charAt(i), str.charAt(i - 1));
        i++;
        return ans(ch, str, i);
    }
    // Driver Program
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
         System.out.println("Enter Binary number:");
        String str = sc.nextLine();
        char[] ch = new char[str.length()];
        ch[0] = str.charAt(0);
        
        // Recursive function call
        ans(ch, str, 1);
  
        // Print Gray Code
        System.out.print("Gray Code is ");
        for (char i : ch)
            System.out.print(i + "");
    }
}


Indtast binært tal:1110011
Grå kode er 1001010


Java tag