我有一个程序,其目的是获取十进制整数并返回二进制值。
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值,并返回值:1410065408
大于1024的值也不起作用。我注意到二进制中的1023是1111111111,这可能与为什么1024不起作用有关。
答案 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
,因此您已超出最大大小