我将十进制整数转换为二进制,当我尝试转换为字符串时,该二进制整数在给出字符串值时总是给出1作为答案。
while(a>0)
{
b = a%2;
n = b;
a = a/2;
System.out.print(n);
}
String m = Integer.toString(n);
System.out.print(m);
非常感谢任何更正和建议。
谢谢!
答案 0 :(得分:4)
在每个循环步骤中,您都有以下两个语句:
b = a % 2;
n = b;
考虑为什么n
的所有可能值都是0
和1
?
这是因为n
复制了b
的值,这是a modulo 2
的值,始终为0
或1
。
n
的最后一个值将是a
的二进制表示的最左侧位,始终为1
(除非a
为{{1}这就是为什么在打印0
时总是得到1
。
答案 1 :(得分:2)
使用时
n = b;
您每次都要替换n的值。你想要它积累n中的位。最简单的方法是使用StringBuilder。
StringBuilder sb = new StringBuilder();
while (a > 0) {
int lowest = a & 1;
sb.insert(0, lowest);
a = a >>> 1; // shift the bits down by 1.
}
String m = sb.toString();
System.out.print(m);
这与Integer.toString(a, 2)