java中的左移和右移运算

左移运算:

左移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取整(或者说取商值,丢弃余数)。


版权声明:本文为weixin_41072572原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。