Java 程序:不使用递归将二进制数转换为格雷码

原文:https://www.studytonight.com/java-programs/java-program-to-convert-binary-code-into-gray-code-without-using-recursion

在本教程中,我们将学习如何在不使用递归的情况下将数字的二进制数转换为其等效的格雷代码。格雷码是一种二进制数字系统,其中两个连续值仅相差一位。但是在继续之前,如果你不熟悉 java 中方法的基本概念,那么一定要查看主题为 java 中方法的文章。

输入:输入二进制数:1110

输出:等效格雷码为:1001

让我们看看例子,以便更好地理解。

程序 1:不使用递归将一个数的二进制码转换成它的等价格雷码

在这个例子中,我们将看到如何在不使用递归的情况下将数字的二进制数转换成它的等价格雷码。

算法:

  1. 开始
  2. 创建扫描仪类的实例。
  3. 声明一个变量来存储二进制数。
  4. 要求用户初始化变量。
  5. 声明一个用户定义的方法来将二进制数转换为格雷码。
  6. 遍历字符串的所有位。
  7. 对二进制字符串的前一位和当前位执行异或运算。
  8. 重复这个过程,直到字符串的所有位都被覆盖。
  9. 打印结果。
  10. 停下来。

下面的例子说明了上述算法的实现。

//Java Program to Convert Binary Code Into 
//Equivalent Gray Code Without Using Recursion
import java.util.*;

public class Main 
{
  public static void toGray(String str)
    {
        // a String varaible to store the obtained gray string.
        String gray = new String();
        gray += str.charAt(0);
        for (int i = 1; i < str.length(); i++)
        {
            // perform XOR on the prevous bit and the
            // current bit of the binary string
         gray += (Integer.parseInt(String.valueOf(str.charAt(i - 1))) ^ 
                   Integer.parseInt(String.valueOf(str.charAt(i))));

        }
        System.out.println("The equivalent gray code is : " + gray);
    }

    // Driver Program
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the Binary number:");
        String str = sc.nextLine();
        toGray(str);
    }
}

输入二进制数:111011001 等效的格雷码为:100110101

程序 2:不使用递归将一个数的二进制码转换成它的等价格雷码

在这个例子中,我们将看到如何在不使用递归的情况下将数字的二进制数转换成它的等价格雷码。

算法:

  1. 开始
  2. 创建扫描仪类的实例。
  3. 声明一个变量来存储二进制数。
  4. 要求用户初始化变量。
  5. 声明一个用户定义的方法来将二进制数转换为格雷码。
  6. 首先,遍历字符串的所有字符。
  7. 声明另一个单独的用户定义函数,该函数将返回两个数字的异或。
  8. 重复这些步骤,直到找到字符串所有位的 xor 值。
  9. 显示输出。
  10. 停下来。

下面的例子说明了上述算法的实现。

//Java Program to Convert Binary Code Into 
//Equivalent Gray Code Without Using Recursion
import java.util.*;

public class Main 
{
    public static int xOR(char a, char b)
    {
        // return 1 if both bits are not same
        if (a != b)
            return 1;

        // else return 0
        return 0;
    }
    // converts the given binary string into its equivalent gray code
    public static void toGray(String str)
    {
        String gray = new String();
        gray += str.charAt(0);
        // for all the other bits, traverse through the
        // binary string
        for (int i = 1; i < str.length(); i++)
        {
            // calling xOR() method on the prevous bit and
            // the current bit of the binary string
            gray += xOR(str.charAt(i - 1), str.charAt(i));
        }
        System.out.println("The equivalent gray code is : " + gray);
    }
    // Driver Program
    public static void main(String args[])
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter the Binary number:");
        String str = sc.nextLine();
        toGray(str);
    }
}

输入二进制数:100011001 等效的格雷码为:110010101