1、“&”,按位与运算
2、“|”,按位或运算
3、“^”,按位异或运算
4、“~”,按位非运算
5、“<<”,左移位操作符,按照操作符右侧指定的位数将操作符左边的操作数向左移动(低位补0);
6、“>>”,(有符号)右移位操作符,按照操作符右侧指定的位数将操作符左边的操作数向右移动。若为正数,高位插入0;若为负数,则插入1;
7、“>>>”,无符号右移位操作符,无论正负都在高位插入0。
注:对于负数的位运算是按照其补码进行运算。负数的补码为其反码加1,负数的反码为其原码按位取反(符号位除外)。
有符号右移与无符号右移的举例说明:
例:对于负整数 “-8”,如果我们对其进行有符号右移1位操作“-8 >> 1”,得到的结果为 -4 。而我们对其进行无符号右移1位操作 “-8>>>1”,得到的结果为2147483644。究其原因,计算机中数值的存储是按补码存储,int型 -8 的原码为“10000000 00000000 00000000 00001000”,补码为“11111111 11111111 11111111 11111000”。我们对其进行右移1位后,因为其为负数,所以高位补1,补码变为补码为“11111111 11111111 11111111 11111100”,则对应的原码为“10000000 00000000 00000000 00000100”,即 -4。
而,我们对 “-8” 进行无符号右移操作,其高位补0,则其补码变为“01111111 11111111 11111111 11111100”,此时它变为了正数,即其补码与原码相同,对应的二进制数为“2147483644”。