从十进制转换为二进制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

我正在编写一个简单的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(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());
}