如何打印负整数的所有设置位

时间:2015-02-09 21:05:20

标签: java bit

 while (n != 0) {
      System.out.print(n & 1);
      n  = n >> 1;
 }

如果n = -1,Java中的上述代码会导致无限循环。

如何让它打印负整数?

1 个答案:

答案 0 :(得分:11)

>>运算符是"符号扩展"右移运算符,这意味着如果原始值中的最高位被置位,那么"位移"是1.这基本上保持了结果的符号相同。

您需要>>>运算符(无符号右移运算符),它始终"移位" 0位,即使最高位为1。

有关详细信息,请参阅JLS section 15.19Java tutorial