位运算是按照数据在内存中的二进制位(bit)进行计算的,位运算智能操作整数类型,需要现将要执行运算的整数转换为二进制,然后才能计算。
设a=0011 1100, b=0000 1101
运算符 | 描述 | 运算法则 | 实例 |
---|---|---|---|
& | 按位与运算 | 两个操作数的二进制对应为都为1时,结果数位为1,否则为0 | (a&b)=0b 1100 |
| | 按位或运算 | 两个操作数的二进制对应为都为0时,结果数位为0,否则为1 | (a|b)= 0b 111101 |
^ | 按位异或运算符 | 两个操作数的二进制对应位相同时,结果为0,否则为1 | (a^b)= ob 110001 |
~ | 按位取反运算 | 将操作数的二进制为数从1修改为0,或者从0修改为1 | (~a) =0b 111101 |
<< | 按位左移运算 | 将操作数的二进制向左移动指定位数,左溢出位丢弃,右边空位用0补齐。相当于乘以2的n次幂 | (a<<2) =0b 11110000 |
>> | 按位右移运算 | 将操作数的二进制向右移动指定位数,右溢出位丢弃,左边空位用0补齐。相当于除以2的n次幂 | (a>>2)=0b 1111 |
说明
1、除按位取反运算符“~”外,其余的位运算符都是二元运算符,结合性均为左结合。
2、所有的位运算符的运算结果均为整数类型。