十进制到二进制转换java

时间:2014-11-10 23:40:13

标签: java

我的方法似乎只适用于所有小于2 ^ 10的int。如果它大于或等于该值,那么它只返回2 ^ 32。我不确定我的程序是如何得到这个的。我需要让它适用于所有小于或等于2 ^ 15的int。任何人至少可以看到为什么它返回2 ^ 32的int大于或等于2 ^ 10?如果是的话请告诉我。

public static int DecToBin(int num) {
    int binNum = 0;
    int divisor = num;
    int mod = 0;
    int exp =0;

    while(divisor != 0){
        mod = divisor%2;
        divisor = divisor/2;
        if(mod==1){
            binNum = (int) (binNum + (Math.pow(10, exp)));
        }
        exp++;
    }
    return binNum;

}

2 个答案:

答案 0 :(得分:1)

实现这一目标的一个简单方法是:

Integer.toBinaryString(int);

这是最简单的方法,但它们可能是更有效的方法。

希望这就是你要找的东西

答案 1 :(得分:0)

正如Taco指出的那样,你可以打电话给Integer.toBinaryString(int),但是如果这是一个作业,或者你应该自己编写这个方法,那么我就是这样做的。

我会写一个方法,它会不断地将数字除以2,并将余数存储在一个字符串中。像这样:

String binaryString = "";
int value = 100;
while(value > 0){
   int remainder = value % 2;
   value = value/2;
   binaryString = remainder + binaryString;
}

我在快速控制台运行中对此进行了测试,并生成了“1100100”,这是正确的。

编辑我将其用作reference