我有以下代码
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我想知道什么是移位运算符的结果类型。
答案 0 :(得分:2)
==
等于运算符在运算符优先级方面位于按位AND运算符之前(请参阅this page)。您应该放置括号以使后者成为:
if ((a & 1) == 0) {
请注意,a & 1
的结果类型与原始代码(one
)中的int
类型相同。