【问题标题】:decimal to binary output is incorrect十进制到二进制输出不正确
【发布时间】:2023-04-02 03:22:02
【问题描述】:

我只能得到小于五的十进制的正确输出。五个的输出是 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());
    }

【问题讨论】:

标签: java binary decimal


【解决方案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));
       }
  }  

【讨论】:

    【解决方案2】:

    这样的东西可能更接近您的要求:

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

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

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

    BigInteger.valueOf(decimal).toString(2)
    

    【讨论】:

      【解决方案3】:

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

      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)

      【讨论】:

        【解决方案4】:

        试试这个代码,我希望这是你要找的:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-04-26
          • 2022-01-16
          • 1970-01-01
          • 2017-06-08
          • 1970-01-01
          • 2018-09-01
          • 2020-05-16
          • 1970-01-01
          相关资源
          最近更新 更多