位移操作意外的结果

时间:2014-07-16 13:05:32

标签: java bit-manipulation

我认为答案是直截了当的,但我仍然没有得到答案。

byte a=5;
int b=10;
int c=a>>2+b>>2;
System.out.print(c);

由于a>>21b>>22,我预计输出为3,但为0。原因是什么?

1 个答案:

答案 0 :(得分:7)

这是因为operator precedence

您所做的与

相同
int c=(a>>(2+b))>>2;

你想要这个:

int c=(a>>2)+(b>>2);