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

标签 java bit

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

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

如何让它打印负整数?

最佳答案

>>> 运算符是一个“符号扩展”右移运算符,这意味着如果设置了原始值的最高位,则“移入”的位为 1 . 这基本上使结果的符号保持不变。

您需要 >>> 运算符(无符号右移 运算符),它总是“移入”0 位,即使最高位是 1。

参见 JLS section 15.19Java tutorial了解更多详情。

关于java - 如何打印负整数的所有设置位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28419344/

相关文章:

java - 如何动态更改日期格式

c# - 大屏多点触控交互应用设计

java - 如何为二维字符串数组中的每一行创建一个对象

c++ - 不同位的随机对

c - 从 C 中的 unsigned int 末尾获取 'n' 二进制位?位掩码?

c++ - 浮点位和严格的别名

java - liquibase.异常.DatabaseException : Duplicate entry

java - 类成员与函数参数

iphone - 如何以位显示 NSData 的内容?

c - 尝试测试字节的第 1 位是否已翻转?位移位