什么类型的位移操作员输出?

时间:2014-10-28 16:32:51

标签: 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,mking我想知道什么是移位运算符的结果类型。

1 个答案:

答案 0 :(得分:2)

==等于运算符在运算符优先级方面位于按位AND运算符之前(请参阅this page)。您应该放置括号以使后者成为:

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

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