17-按位运算符
B.2.9 按位运算符
下面所列除了~,都是按位运算符。
~ 是一元运算符,它通过翻转运算对象的每一位得到一个值。
& 是逻辑与运算符,只有当两个运算对象中对应的位都为 1 时,它生成的值中对应的位才为 1 。
| 是逻辑或运算符,只要两个运算对象中对应的位有一位为 1 ,它生成的值中对应的位就为 1 。
^ 是按位异或运算符,只有两个运算对象中对应的位中只有一位为 1 (不能全为 1 ),它生成的值中对应的位才为 1 。
<< 是左移运算符,把左边运算对象中的位向左移动得到一个值。移动的位数由该运算符右边的运算对象确定,空出的位用 0 填充。
>> 是右移运算符,把左边运算对象中的位向右移动得到一个值。移动的位数由该运算符右边的运算对象确定,空出的位用 0 填充。
示例
假设有下面的代码:
int x = 2;
int y = 3;
x & y 的值为 2 ,因为 x 和 y 的位组合中,只有第 1 位均为 1 。而 y << x 的值为 12 ,因为在 y 的位组合中, 3 的位组合向左移动两位,得到 12 。