Java >> Tutoriel Java >  >> Java

Programme Java pour convertir le code binaire d'un nombre en son équivalent Gray's Code à l'aide de la récursivité

Dans ce didacticiel, nous allons apprendre à convertir le code binaire du nombre en son équivalent en code de Gray à l'aide de la récursivité. Le code Gray est un système de numération binaire dans lequel deux valeurs successives diffèrent d'un seul bit. Une fonction récursive est une fonction qui s'appelle elle-même. Mais avant d'aller de l'avant, si vous n'êtes pas familier avec les concepts de base des méthodes en Java, consultez l'article sur les méthodes de sujet en Java.

Entrée : Saisissez le nombre binaire :1110

Sortie : Le code gris équivalent est :1001

Programme 1 :Convertir le code binaire d'un nombre en son équivalent en code de Gray à l'aide de la récursivité

Dans cet exemple, nous verrons comment convertir le code binaire du nombre en son équivalent en code de Gray en utilisant la récursivité lorsque le nombre est dans la limite des nombres entiers.

Algorithme :

  1. Démarrer
  2. Créez une instance de la classe Scanner.
  3. Déclarez une variable pour stocker le nombre binaire.
  4. Demandez à l'utilisateur d'initialiser la variable.
  5. Déclarez une méthode définie par l'utilisateur pour convertir le code binaire en code Gray.
  6. Si le nombre est 0, alors renvoie 0.
  7. Extraire le dernier et l'avant-dernier chiffre.
  8. Sinon, si les deux derniers bits sont opposés, alors gray =1 + (10 * binaryToGray(number/10)).
  9. Sinon si les deux derniers bits sont identiques alors gray =10 * binaryToGray(number/10)
  10. Afficher le résultat.
  11. Arrêter

L'exemple ci-dessous illustre l'implémentation de l'algorithme ci-dessus.

//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));
    }
}


Entrez le nombre binaire :1101
Le code gris est 1011

Programme 2 :Convertir le code binaire d'un nombre en son équivalent en code de Gray à l'aide de la récursivité

Dans cet exemple, nous verrons comment convertir le code binaire du Nombre en son équivalent en code de Gray en utilisant la récursivité lors de la saisie de grands nombres binaires.

Algorithme :

  1. Démarrer
  2. Créez une instance de la classe Scanner.
  3. Déclarez une variable pour stocker le nombre binaire au format chaîne.
  4. Demandez à l'utilisateur d'initialiser la variable.
  5. Déclarez une fonction définie par l'utilisateur pour trouver le xor de deux nombres.
  6. Appelez récursivement la fonction pour trouver le code gris du numéro saisi.
  7. Afficher le résultat.
  8. Arrêter

L'exemple ci-dessous illustre l'implémentation de l'algorithme ci-dessus.

//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 + "");
    }
}


Entrez le nombre binaire :1110011
Le code gris est 1001010


Balise Java