一、介绍

java的计算都是将数据转化成二进制数据,然后进行位移运算,如果在计算中直接运用位移计算可以提高速度,在JDK中的很多源码也是通过高效率的位移来节约时间。常见的java位移有三类、左位移、右位移、无符号位移。在这之前我们也需要了解java之间的逻辑运算。

本文介绍流程如下:

1、常见逻辑运算

2、左位移

3、右位移

4、无符号位移

5、HashMap源码分析


二、逻辑运算

运算名称

符号

声明

 备注


&

真真为真

转化为二进制进行计算


|

一真为真 

 


~

真假颠倒

 

异或

^

相同为假,相异为真

0为假,1为真

 

三、左位移 & 右位移


我们知道位移是二进制数据流层面的计算方式。而我们平时使用的都是十进制。为了更好地理解,那么也就需要知道二进制流数据与十进制数据之间是如何转化的。以下为例:

十进制:10

二进制:0000 1010        (原理:二进制默认byte字节码[~128-128]这个范围,也即是2^8,因此二进制最大位数为八)

转化呢:1*2^3 + 1*2^1 = 10  (原理:算式的幂为二进制码的1的索引,每个位数为一个2单位。满2进位)

 

左位移

十进制:1

二进制:0000 0001

 

 


四、无符号位移


五、HashMap举例