一、介绍
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举例