dca*_*cas 0 java binary while-loop
我试图弄清楚这个程序是如何工作的,我陷入了While循环,我不明白第二个循环如何退出,因为它v永远不会等于0或负数.既然这是唯一可以退出该循环的条件,还是我错过了更深层次的东西?代码将整数(> 0)转换为二进制.
public class Binary {
public static void main(String[] args) {
// read in the command-line argument
int n = Integer.parseInt(args[0]);
// set v to the largest power of two that is <= n
int v = 1;
while (v <= n/2) {
v = v * 2;
}
// check for presence of powers of 2 in n, from largest to smallest
while (v > 0) {
// v is not present in n
if (n < v) {
System.out.print(0);
}
// v is present in n, so remove v from n
else {
System.out.print(1);
n = n - v;
}
// next smallest power of 2
v = v / 2;
}
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)