如何打印负整数的所有设置位
How to print all set bits of a negative integer
while (n != 0) {
System.out.print(n & 1);
n = n >> 1;
}
如果 n = -1,Java 中的上述代码会导致无限循环。
如何让它打印负整数?
>>
运算符是一个"sign-extended"右移运算符,也就是说,如果设置了原始值中的最高位,则"shifted in"的位为1。这基本上使结果的符号保持不变。
你想要 >>>
运算符( 无符号右移 运算符),它总是 "shifts in" 0 位,即使最高位是 1。
有关详细信息,请参阅 JLS section 15.19 or the Java tutorial。
while (n != 0) {
System.out.print(n & 1);
n = n >> 1;
}
如果 n = -1,Java 中的上述代码会导致无限循环。
如何让它打印负整数?
>>
运算符是一个"sign-extended"右移运算符,也就是说,如果设置了原始值中的最高位,则"shifted in"的位为1。这基本上使结果的符号保持不变。
你想要 >>>
运算符( 无符号右移 运算符),它总是 "shifts in" 0 位,即使最高位是 1。
有关详细信息,请参阅 JLS section 15.19 or the Java tutorial。