前言:通过阅读HashMap,ArrayList等源码发现在进行容量的扩容时总是会用上位移,而位移运算在特定操作下是最快的运算方法
位运算高效的原因
例子:2*8
在计算机中运算都是转为二进制运算
2转为二进制:0010 8转为二进制:1000
普通运算
1000
*0010
-------
0000
1000
-------
10000 结果:16
位运算
2<<3
0000 0000.. 0000 0010 共计32位
000 0000.. 0001 0000 左位移3位,共计32位,结果为16
明显得出位移运算的速度是高于*算数运算
位移运算注意点
异或运算时:任意一个数异或另一个数两次的结果都为原来数值。例:a^b^b = a
>>与>>>的区别:>>右移后,原最高位为1,移后的最高位全补1,原最高位为0,则全补0。>>>右移后,不管正负数全用0补。