java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
一、左移运算符<<
m<<n 代表把数字m在无溢出的前提下乘以2的n次方。
// 1乘以2的1次方
1<<1 // 2
// 1乘以2的5次方
1<<5 // 32
// 1乘以2的10次方
1<<10 // 1024
二、右移运算符>>
右移m>>n 代表把数字m除以2的n次方,原来是正数的还是正数,负数还是负数。注意,如果是单数,也就是二进制末位为1,则结果是将m除以2的n次方的整数商。
// 1除以2的1次方
1>>1 // 0
// 1除以2的5次方
1>>5 // 0
// 10除以2的1次方
10>>1 // 5
// -10除以2的1次方
-10>>1 // -5
三、无符号右移 >>>
无符号右移运算符“>>>” - 同右移,但是结果全变正数。
- 把数字转换为二进制 然后进行右移一位 并变成正数
图解: