在平常学习Java的时候,是很少遇到左移运算符<< 和右移运算符>> 的。但是在刷算法的时候,我发现了。现在就来记录一下。
左移运算符,就是整体向高位移动(向左),舍弃高位,然后低位补零。
这个数左移一位:1000 1100 << 1
结果: 000 1100 0 就是高位舍去,低位补零。
需要注意的是如果超过32或者超过64.那么情况就会不一样。就需要对移动的位数取余。取余32或者取余64。
还是原来的例子:
1000 1100 << 32
则 1000 1100 << (32 %32) 等于 1000 1100 << 0 就是不移动。
1000 1100 <<33 等于 1000 1100 <<(33%32) 等于 1000 1100 <<1 等于 000 1100 0。
同理左移的位数超过64则要取余64.
1000 1100 <<65 等于 1000 1100 <<(65 % 64) 等于 1000 1100 <<1 等于 000 1100 0。
右移运算符也是如此。整体向右移动,低位舍去,高位补零。
1000 1100 >> 1 等于 0 1000 110
超过32或者超过64则和左移运算符同理。
参考:https://www.cnblogs.com/zhangfengshi/p/12750402.html