左移运算:
左移n位,相当于乘以2的n次方。
Eg:
int a=5;
a=a<<2;
System.out.println(a);
输出:20
解释:将十进制数字5换算成二进制数字为:101;
5左移1位,对应的二进制数101左移1位变为:1010,可以看到101左移1位之后,末位补的是零,因此相当于左移之后没有额外增加数值;回顾二进制加权展开为十进制的加权公式,当左移时,只有所在位置为1的受到影响,且左移一位,对加权展开公式中每个2的幂次方加1,左移两位则分别加2,幂次方加1相当于对初始数值乘以一个数值为2的倍数,左移两位则相当于乘以2的2次方,即4。
而右移运算由于可能造成二进制位是1的最后一位丢失,因此对于整数来说,右移运算则相当于整数除以2取整(或者说取商值,丢弃余数)。