使用 While 循环时转换为二进制的问题
Issues Converting to Binary While Using a While Loop
我目前正在尝试解决 java 中的二进制间隙问题,并首先尝试使用 while 循环将十进制转换为二进制。我正在用不同的十进制输入测试它,但在逐步执行它之后注意到,在最后一个循环中我得到整数溢出而不是附加 1,(或者至少我认为我是,它从 100010000 到 411065418,我假设是因为它乘以 100010000 *10)
我试着单步执行它,这是我目前的代码:
public class BinaryGap {
public static void main(String[] args) {
// write your code in Java SE 8
int decimal = 529;
int ans =0;
//returns the number in binary but in big endian form
while(decimal != 0){
ans += (decimal % 2);
ans *= 10;
decimal /=2;
}
}
}
如能指出我的思路错误之处,将不胜感激
您的代码在概念上工作正常 - 但变量 'ans' 满足 int 的限制 - 2147483647。
当将 +1 添加到此值时 - 变量溢出并变为最小值。
为了克服它,你可以使用 type 'String' for 'ans' 变量,并对代码进行小的调整:
int decimal = 529;
String ans = "";
//returns the number in binary but in big endian form
while(decimal != 0){
ans += (decimal % 2);
decimal /=2;
}
我目前正在尝试解决 java 中的二进制间隙问题,并首先尝试使用 while 循环将十进制转换为二进制。我正在用不同的十进制输入测试它,但在逐步执行它之后注意到,在最后一个循环中我得到整数溢出而不是附加 1,(或者至少我认为我是,它从 100010000 到 411065418,我假设是因为它乘以 100010000 *10)
我试着单步执行它,这是我目前的代码:
public class BinaryGap {
public static void main(String[] args) {
// write your code in Java SE 8
int decimal = 529;
int ans =0;
//returns the number in binary but in big endian form
while(decimal != 0){
ans += (decimal % 2);
ans *= 10;
decimal /=2;
}
}
}
如能指出我的思路错误之处,将不胜感激
您的代码在概念上工作正常 - 但变量 'ans' 满足 int 的限制 - 2147483647。
当将 +1 添加到此值时 - 变量溢出并变为最小值。
为了克服它,你可以使用 type 'String' for 'ans' 变量,并对代码进行小的调整:
int decimal = 529;
String ans = "";
//returns the number in binary but in big endian form
while(decimal != 0){
ans += (decimal % 2);
decimal /=2;
}