一、JAVA运算符号还是很重要的,很重要的,很重要的!
首先,我最近在看HashMap的源码,由于一直不满足于只会使用别人的api,就想窥探一下别人的实现。然后里面就遇到了挺多运算符的代码。为此特地去啃了一下基础书。为此写下这篇文章!
由于我个人水平有限,若有错误,非常欢迎在评论区指出。在此表示感谢
二、左移符号(<<)
公式: value << num 意思是:value * 2的num次方
例子: 3 << 2 就等于12 value是3 * 2的num(就是2)次方
而我们更应该要从二进制里面理解。
左移规则: 往左边移动num个位置,最高位(左边)舍去num个数字,最低位(右边)补上num个0
例子: 3 << 2
3的二进制表示是: 0000 0011 根据规则左移 0000 0011 << 2 变成 0000 1100
三、右移符号(>>)
公式: value >> num 意思: value / 2的num次方
右移规则: 往右边移动num个位置,最高位(左边)根据原来数的符号位补0或者1(原来是负数就补1,正数补0)
例子:11100010 >> 2 根据规则: 结果是 11111000
四、无符号右移(>>>)
公式: value >>> num
无符号右移规则:将操作数所有二进制位向又移动num位,运算时候,左边的空位补0(不考虑元素正负)
例子: 01100010 >>> 2 根据规则: 结果为 00011000
网友评论