从 10 进制转换为 2 进制

Conversion from Base 10 to Base 2

我正在尝试将以 10 为基数的数字转换为以 2 为基数的数字,但我遇到了问题。当我 运行 代码时,我得到的基数 2 的顺序错误。例如,我输入 54 并得到 110110 而不是 011011,这是正确的值。

import java.util.Scanner; 
public class DecimalToBinary
{
public static void main(String arg[]){   
  int quotient;
  int remainder;

  Scanner keyboard = new Scanner (System.in);
  System.out.println("Please enter a decimal number:"); 
  quotient = keyboard.nextInt();  

  do {
     remainder = quotient % 2;
     quotient = quotient / 2;

    // String x = String.valueOf(remainder);
    // System.out.print(x);
  System.out.print (remainder);

  } while (quotient != 0);
   }  
   }

Base 10 to Base 2应该反向输出,我想你可以使用array,然后反向输出array

 public static void main(String arg[]){
        int quotient;
        int remainder;
        List<Integer> arrayList=new ArrayList<Integer>();
        Scanner keyboard = new Scanner(System.in);
        System.out.println("Please enter a decimal number:");
        quotient = keyboard.nextInt();

        do {
            remainder = quotient % 2;
            quotient = quotient / 2;

            // String x = String.valueOf(remainder);
            // System.out.print(x);
           // System.out.print (remainder);
            arrayList.add(remainder);

        } while (quotient != 0);
        ListIterator<Integer> li;
        for (li = arrayList.listIterator(); li.hasNext();) {// 将游标定位到列表结尾
            li.next();
        }
        for (; li.hasPrevious();) {// 逆序输出列表中的元素
            System.out.print(li.previous() + " ");
        }
    }

Java 有一个内置方法可以做到这一点:

Integer.toString(int i, int radix);

哪里

  • i 是你的十进制数,
  • radix 是你想要的基础,在你的例子中,2.

它将return一个二进制字符串。

我能够修复你的代码

public class CustomDecimalToBinary {
    public static void Dec2Bin() {
        int quotient;
        int remainder;

        Scanner keyboard = new Scanner (System.in);
        System.out.println("Please enter a decimal number:");
        quotient = keyboard.nextInt();

        do {
            remainder = quotient % 2;

            // String x = String.valueOf(remainder);
            // System.out.print(x);
            System.out.print (remainder);

        } while ((quotient /= 2) != 0);
    }
}

示例输出:

Please enter a decimal number:
54
011011

编辑:看来我解决了问题以获得您想要的输出,但您的代码产生了正确的输出...

试试这个解决方案,它很简单:

  int quotient;
      int remainder;

      Scanner keyboard = new Scanner (System.in);
      System.out.println("Please enter a decimal number:"); 
      quotient = keyboard.nextInt();  
      Stack<Integer> s=new Stack<Integer>();
      do {
         remainder = quotient % 2;
         quotient = quotient / 2;
         s.add(remainder);
        // String x = String.valueOf(remainder);
        // System.out.print(x);
      //System.out.print (remainder);
      } while (quotient != 0);
      while(!s.isEmpty()){
          System.out.print(s.pop());

      }

另一个内置的 java 函数是

Integer.toBinaryString(int num)

其中 num 是您要转换的以 10 为基数的数字