运算量只能是整型或字符型的数据,不能为实型数据。
& 如果参加&运算的是负数,则以补码的形式表示为二进制数,然后按位进行“与”运算。 用途:清零、取一个数中某些指定位
| 用途:用来对一个数据的某些位定值为1
^ 异或(XOR),判断两个相应的位值是否为“异”,相异为1. 用途:使特定位翻转(要使哪几位翻转,将与其相异或的数的哪几位置1) 与0相异或,保留原值 交换两个值,不用临时变量
~ 使某个整数的最低一位为0(a = a&~1)(~1 最后一位为0,其余都为1) ~比&优先级高
<< 左移比乘法运算快得多,有些C编译程序自动将乘2的运算用左移一位来实现。
>> 移到右端的低位被舍弃, 对无符号数,高位补0; 对于有符号数,如果原来符号高位为0(该数为正),则左边也植入0;如果符号位原来为1,则左边移入0还是1,取决于所用的计算机系统。移入0的称为“逻辑右移”,即简单右移,移入1的称为“算术右移”。
位运算符与赋值运算符可以组合成复合赋值运算符,eg, &= |= >>= <<= ^= a&=b a= a&b
不同长度的数据进行位运算,系统会将二者按右端对齐。 eg. a&b 如果b是无符号整型,则左侧填满0 若b为正数,则左侧填满0,若b为负数,左侧填满1
|