将整数转换为二进制:程序在1024处打破

时间:2018-01-31 14:26:33

标签: java

我有一个程序,其目的是获取十进制整数并返回二进制值。

  public static int returnBinary(int number) {
            int current;
            int digit = 1;
            int result = 0;
            while (number > 0) {
                current = number % 2;
                number = number/2;
                result = result + current * digit;
                digit = digit * 10;
            }
            return result;
        }

此程序完美运行,直到达到1024值,并返回值:141006540​​8

大于1024的值也不起作用。我注意到二进制中的1023是1111111111,这可能与为什么1024不起作用有关。

3 个答案:

答案 0 :(得分:3)

您正在尝试分配高于Integer.MAX_VALUE的值。在Java中,它是2.147.483.647,二进制值1.111.111.111可能是十进制的1023,但它大约是Integer.MAX_VALUE的一半。在Integer中,任何更高的内容都无法表示。您可能希望返回String

答案 1 :(得分:0)

您可以返回String而不是整数,请在下面找到字符串实现。

public static String returnBinary(int number) {
    String result = "";
    int digit;
    while (number > 0) {
        digit = number & 0X1;
        result = digit+result;
        number = number >> 1;
    }
    return result;
}

答案 2 :(得分:-1)

在二进制1024中是10000000000但是int的最大值是2 147 483 647,因此您已超出最大大小