本文参考:java移位运算符详解html
2 << 1 // 4
至关与2*2,即将2(value)化为2进制,再向左移移1(num)位,即: 00000010,将1向左移移1位:00000100,化为十进制为4。java
10 << 20
这个相比上个复杂点,但运算方法同样。即:00001010 = 2三次方+2一次方,中的每一个1都向左移20位。 即: = 10485760code
道理和和左移差很少,只不过是反方向。将1向右移num位,其余空位所有补0.htm
当value是整数时,这种移位方式和‘>>’是同样的。可是当value时负数时则结果彻底相反。>>>是无论value转换为2进制后的正负号的,他只管移位,移位后的结果均为整数。看个例子blog
2>>>1 // 结果为1 -2>>>1 //结果为2147483647
若是你和博主同样对结果的差异感到震惊的时候,说明你忘了二进制的负数表达方式。图片
这里你应该知道-2 的二进制为 111111111111111111111101,再右移后的结果可想而知。get
本次总结就到这里,欢迎吐槽。数学