我的方法似乎只适用于所有小于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;
}
答案 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。