while (n != 0) {
System.out.print(n & 1);
n = n >> 1;
}
如果n = -1,Java中的上述代码会导致无限循环。
如何让它打印负整数?
答案 0 :(得分:11)
>>
运算符是"符号扩展"右移运算符,这意味着如果原始值中的最高位被置位,那么"位移"是1.这基本上保持了结果的符号相同。
您需要>>>
运算符(无符号右移运算符),它始终"移位" 0位,即使最高位为1。
有关详细信息,请参阅JLS section 15.19或Java tutorial。