java - 移位运算符的输出是什么类型?

标签 java bit-shift

我有以下代码

 public static void main(String[] args){
          //find sign of 32 bit integer
    int a=0x6348987C;
    a=a>>31;
    int one=a&1;
    if( one==0 )
    {
     System.out.println("Positive"); 
    }
    else
    {
     System.out.println("Negative");  
    }

  }

如果我用 if( a&1 ==0 ) 更改比较行,编译会失败,运算符 & 不能应用于 int,boolean,让我想知道移位运算符的结果类型是什么。

最佳答案

就运算符优先级而言,== 相等运算符先于按位 AND 运算符(请参阅 this page )。您应该放置括号以使后者位于前面:

if ((a & 1) == 0) {

请注意,a & 1 结果的类型与原始代码中的 one 类型相同(int)。

关于java - 移位运算符的输出是什么类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26613614/

相关文章:

c - 弄清楚这个按位 AND 和 LSL 在 C 中到底做了什么

java - 在 Java 中对 long 进行位移

java - 在java中按负数移位

java - 尽管使用了flush(),BufferedWriter仍写入部分行

java - 如何使用Service、ServiceLocator、portType、porttypeProxy和stub来创建java客户端

java - 优化单词列表中的字符串检查 (Java)

java - 为什么不打印此异常?为什么显示错误?

java - 使用原始类中的自定义 Android AnalogClock 设置时间

math - 如何在verilog中使用算术移位和选择器?

c - 移位取消而不是预期的行为