运算符 |
含 义 |
说明 |
例子 |
& |
按位与 |
把参与运算的两个数对应的二进制位相与,只有对应的二进制均为1时,结果的对应位才为1,否则为0。 |
9&5中9可以写成(00001001),5可以写成(00000101),那么9&5的运算结果为0000 0001,输出结果是1。 |
| |
按位或 |
把参与运算的两个数对应的二进制位相或,也就是只要对应的两个二进制位有一个为1时,其结果就为1。 |
9|5相当于00001001|00000101,运算结果是00001101,输出结果是13。 |
^ |
按位异或 |
把参与运算的两个数对应的二进制位相异或,当对应的二进制位上的数据字不相同时,结果对应为1时,否则为0。 |
1^1=0,1^0=1,0^0=0,0^1=1 9^5相当于00001001^00000101,运算结果是00001100,输出结果是12。 |
~ |
取反 |
把运算数的各个二进制位按位求反。 |
~9相当于~(0000 1001),运算结果为1111 0110。 |
<< |
左移 |
把“<<”左边的运算数的各二进制位向左移若干位,“<<”右边的数是指定移动的位数,高位丢弃,低位补0。 |
a<<4指把a的各二进位向左移动4位,如a=00000011(十进制为3),左移4位后为00110000(十进制48)。 |
>> |
右移 |
把“>>”左边的运算数的各二进制位全部右移若干位,“>>”右边的数是指定移动的位数。 |
设a=15,a>>2表示把00001111右移为0000 0011(十进制为3)。 |
需要说明的是,对于有符号数,在右移时,符号位将随同移动。当操作数为正数时,最高位为0,而为负数时,最高位为1。最高位是补0或补1取决于编译系统的规定。