从十进制转换为二进制Java错误
我正在编写一个简单的Java程序,将十进制转换为二进制从十进制转换为二进制Java错误,java,binary,Java,Binary,我正在编写一个简单的Java程序,将十进制转换为二进制 public static int toBinary(int n) { int result = 0; while (n >= 1) { int power = 0; while ((int) Math.pow(2, power) <= n) { power++; } result += (int) Math.pow(1
public static int toBinary(int n) {
int result = 0;
while (n >= 1) {
int power = 0;
while ((int) Math.pow(2, power) <= n) {
power++;
}
result += (int) Math.pow(10, power - 1);
n = n - (int) Math.pow(2, power - 1);
}
return result;
}
该程序在1023年前一直适用于n,但在那之后失败了,我不确定我哪里做错了。有人能帮忙吗?您的代码有问题 1024的二进制数是1000000000,一个int可以保存的最大值是2147483647 使用整数数组存储数字:
public static void convertBinary(int num) {
int[] binary = new int[40];
int index = 0;
while (num > 0) {
binary[index++] = num % 2;
num /= 2;
}
for (int i = index - 1; i >= 0; i--){
System.out.print(binary[i]);
}
}
您也可以使用该方法
您还可以使用StringBuilder存储结果:
public static void convertBinary(int num){
StringBuilder binary = new StringBuilder();
while (num > 0){
binary.append(num % 2);
num = num / 2;
}
System.out.println(binary.reverse());
}
不要在循环中使用字符串不可变,始终使用StringBuilder可变。您可以详细说明“之后失败”吗“。这不是很有表现力…整数已经是二进制的了。您需要的是十进制数的二进制表示形式。所以只需使用Integer.toBinaryString。如果您自己增长,请将结果存储在字符串中,而不是整数。以下是一种方法。我可以建议使用位集存储转换结果吗?如果您打算我会告诉OP怎么做,然后不要使用数组。使用StringBuilder或字符串。
public static void convertBinary(int num){
StringBuilder binary = new StringBuilder();
while (num > 0){
binary.append(num % 2);
num = num / 2;
}
System.out.println(binary.reverse());
}