Java中的移位运算规则如下:
1. 左移运算符(<<):将操作数的所有位向左移动并用0填充右侧空位。移动的位数由右侧的操作数指定。例如,对于表达式`a << b`,将`a`的所有位向左移动`b`个位置。
2. 右移运算符(>>):将操作数的所有位向右移动。如果操作数是正数,则用0填充左侧空位;如果操作数是负数,则用1填充左侧空位。移动的位数由右侧的操作数指定。例如,对于表达式`a >> b`,将`a`的所有位向右移动`b`个位置。
3. 无符号右移运算符(>>>):将操作数的所有位向右移动。无论操作数是正数还是负数,都用0填充左侧空位。移动的位数由右侧的操作数指定。例如,对于表达式`a >>> b`,将`a`的所有位向右移动`b`个位置。
需要注意的是,移位运算符对于操作数的位数没有限制。如果移动的位数超过了操作数的位数,则结果是未定义的。