为什么要用位移?

前言:通过阅读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补。

猜你喜欢

转载自www.cnblogs.com/guaosky/p/12628233.html