十进制到二进制输出不正确

时间:2014-06-03 10:08:38

标签: java binary decimal

我只能获得小于5的正确输出。五的输出是110,当它应该是101.六的输出是101,十的输出是1100.

        //while loop divides each digit
   while (decimal > 0) 
   {

            //divides and digit becomes the remainder
        int digit = decimal % 2;

        //makes the digit into a string builder so it can be reversed  
        binaryresult.append(digit);

        decimal = decimal / 2;


        display.setText(binaryresult.reverse());
    }

4 个答案:

答案 0 :(得分:1)

使用以下可能适合您的代码

 import java.util.Scanner;

 public class decToBinary{

    public String decToBin(int n) {

      StringBuilder result = new StringBuilder();

      int i = 0;
      int b[] = new int[10];

         while (n != 0) {
            i++;
            b[i] = n % 2;
            n = n / 2;
         }

         for (int j = i; j > 0; j--) {
             result.append(b[j]);
          }
          return result.toString();
     }

    public static void main(String args[]){
       Scanner sc=new Scanner(System.in);
       System.out.println("Enter decimal no :");
       int n=sc.nextInt();
       System.out.println("binary numbers is :");
       decToBinary dtb = new decToBinary();
       System.out.println(dtb.decToBin(n));
       }
  }  

答案 1 :(得分:0)

这样的事情可能更接近你的要求:

    while (decimal > 0) {
        result.insert(0, (char) ((decimal % 2) + '0'));
        decimal /= 2;
    }

它使用insert来避免反转并添加字符而不是数字。

但是你最好使用内置机制,例如:

BigInteger.valueOf(decimal).toString(2)

答案 2 :(得分:0)

我无法使用以下内容重现该行为:

public static String decToBin(int n) {
    StringBuilder result = new StringBuilder();
    while (n > 0) {
        int dec = n % 2;
        result.append(dec);
        n = n / 2;
    }
    return result.reverse().toString();
}

但是,请考虑使用内置

public static String decToBin(int n) {
    return Integer.toBinaryString(n);
}

(甚至如上所述的BigInteger)

答案 3 :(得分:0)

试试这段代码,我希望这是你在寻找的东西:

public class DecimalToBinary {
    public static void main(String[] args)
    {
        int decimal=11;
        StringBuffer binaryValue=new StringBuffer();
        while(decimal>0 ){
            int rem=decimal%2;
            decimal=decimal/2;
            System.out.println("Remainder:"+rem);
            binaryValue.append(rem);
        }
        System.out.println("binary is:"+binaryValue.reverse());
    }
}