位移操作意外的结果

use*_*065 4 java bit-manipulation

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

byte a=5;
int b=10;
int c=a>>2+b>>2;
System.out.print(c);
Run Code Online (Sandbox Code Playgroud)

由于a>>21b>>22,我期待输出为30.什么原因?

Den*_*ret 7

这是因为运营商的优先权.

你做的和你一样

int c=(a>>(2+b))>>2;
Run Code Online (Sandbox Code Playgroud)

你要这个 :

int c=(a>>2)+(b>>2);
Run Code Online (Sandbox Code Playgroud)