这里有几个概念:
首先,运算符的先后顺序。
=号,为赋值符号,是最后执行的。
先看第一个图:
int a = 2008;
int c1 = a << 2;
int c2 = a >> 2;
<<号为位运算符号,操作对象是二进制,含义是整个二进制值左移,a << 2 表示 a的二进制左移2位。
那么首先a的值是10进制的2008,我们转换成二进制为11111011000
现在我们将这个值左移两位,实际上就是在值的最右边补上了两个0,变为11111011000
00
因为c1是int型,那是十进制数,那么我们将1111101100000转回十进制,为8032
>>同理,右移符号,右移相当于把二进制最右边的直接去掉
11111011000 >> 2 后变为 111110110 ,转成十进制为502。
第二个图
c的值确实应该为false,为true是错误的