Java中的十进制到二进制转换器

时间:2012-11-20 00:17:51

标签: java binary decimal converter

我需要在Java中创建一个十进制到二进制转换器。我不能使用Integer.toBinaryString(),我见过的每个答案都使用它。我需要实际制作算法。我想保持输入一个int和输出一个字符串,因为如果我改变那个程序的其余部分来自搞砸了。如果可以,请保持基本。这是我在经过数小时的绘图和报废后最终得到的结果,并且它有很多问题,比如它甚至没有将二进制数组合在一起。请帮助,我很困惑,我的大脑一团糟。

public static String decToBin(int dec)
  {
    String bin = "";
    int exp = 0;

    for(int expLevel = 0; Math.pow(2, expLevel) <= dec; expLevel++)
    {
      if(dec - Math.pow(2, expLevel) >= 0)
      {
        dec -= Math.pow(2, expLevel-1);
      }
    }
    return bin;
  }

4 个答案:

答案 0 :(得分:0)

您似乎需要查看数学笔记。以下是基本算法的一个很好的解释:How to Convert from Decimal to Binary

如果你检查提供的链接,你会发现你只需要将数字的其余部分除以2.作为一个简短的算法:

int n <- user input (or other source)
String binaryForm <- empty string
while (n > 0) {
    int res <- n % 2;
    n <- n / 2;
    binaryForm <- res + binaryForm
}

答案 1 :(得分:0)

两个相当明显的事情:

  • 声明后,您并未在任何地方更改bin(并且未使用exp。)
  • if(dec - Math.pow(2, expLevel) >= 0)中的条件等同于循环不变量,因此始终为真。

这种方法可以起作用,但循环必须走另一条路,即从2的较高功率到较低的功率(这意味着你首先必须找到比输入小的2的最大功率,除非你对领先零点罚款。此外,它可能有助于避免重新分配方法参数(dec)。

答案 2 :(得分:0)

您可以将参数移位1位并将其添加到字符串中。最后你可以反转它,如下:

public class Main {
    public static void main(String[] args) throws Exception {
        System.out.println(decToBin(0));
        System.out.println(decToBin(1));
        System.out.println(decToBin(2));
        System.out.println(decToBin(127));
    }

    public static String decToBin(int dec) {
        if (dec == 0) {
            return "0"; // special case
        }

        final StringBuilder result = new StringBuilder();
        int current = dec;

        while (current != 0) {
            result.append(current & 0x1);
            current = current >> 1;
        }

        return result.reverse().toString();
    }
}

还有一个fiddle。 它适用于正整数。

答案 3 :(得分:-1)

import java.util.Scanner;

public class DecimalToBinary {

public String toBinary(int n) {
   if (n == 0) {
       return "0";
   }
   String binary = "";
   while (n > 0) {
       int rem = n % 2;
       binary = rem + binary;
       n = n / 2;
   }
   return binary;
}

public static void main(String[] args) {
   Scanner scanner = new Scanner(System.in);
   System.out.print("Enter a number: ");
   int decimal = scanner.nextInt();
   DecimalToBinary decimalToBinary = new DecimalToBinary();
   String binary = decimalToBinary.toBinary(decimal);
   System.out.println("The binary representation is " + binary);

}
}