符号(名称) | 规则(示例) |
---|---|
&(与) | 两个位都为1时,结果才为1。示例:1&1=1;1&0=0;0&0=0 |
|(或) | 两个位都为0时,结果才为0。示例:1|1=1;1|0=1;0|0=0 |
~(非) | 0变1,1变0。示例:~0=1; ~1=0 |
^(异或) | 两个位相同为0,相异为1。示例:1 ^ 1 = 0; 1 ^ 0 = 1; 0 ^ 0=0 |
<< (左移) | 各二进位全部左移若干位,高位丢弃,低位补0。 |
>>(右移) | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)。 |
左移运算符(<<)
定义:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
设 a=1010 1110,a = a<< 2 将a的二进制位左移2位、右补0,即得a=1011 1000。
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
右移运算符(>>)
定义:将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
例如:a=a>>2 将a的二进制位右移2位,左补0 或者 左补1得看被移数是正还是负。
操作数每右移一位,相当于该数除以2。
复合赋值运算符
位运算符与赋值运算符结合,组成新的复合赋值运算符,它们是:
&= 例:a&=b 相当于 a=a&b
|= 例:a|=b 相当于 a=a|b
>>= 例:a>>=b 相当于 a=a>>b
<<= 例:a<<=b 相当于 a=a<<b
^ = 例:a^ =b 相当于 a=a^b