Java中有三种移位运算符:左移运算符(<<),右移运算符(>>)和无符号右移运算符(>>>)。
1. 左移运算符(<<):将一个数的所有位向左移动指定的位数,低位补0。移动后,高位的位数被丢弃,低位补0。
例如,对于二进制数1101,左移2位后结果为110100。
2. 右移运算符(>>):将一个数的所有位向右移动指定的位数,高位补符号位。移动后,低位的位数被丢弃,高位补符号位(即正数补0,负数补1)。
例如,对于二进制数1110,右移2位后结果为1111。
3. 无符号右移运算符(>>>):将一个数的所有位向右移动指定的位数,高位补0。移动后,低位的位数被丢弃,高位补0。
例如,对于二进制数1011,无符号右移2位后结果为0010。
移位运算符的原理是通过对二进制数的位进行移动来实现。左移运算符通过将所有位向左移动指定的位数,并且在低位补0来实现。右移运算符通过将所有位向右移动指定的位数,并且在高位补符号位来实现(正数补0,负数补1)。无符号右移运算符通过将所有位向右移动指定的位数,并且在高位补0来实现。