左移 <<

左移n位,相当于乘以2的n次幂,需要注意的是当左侧有1移出去时,该结论不成立。

右移 >>

右移n位,相当于除以2的n次幂并取整,并且右侧有1移出去后也不影响该结论的成立。

位与 &

原理省略,
特点是:与1按位&,原位不变,与0按位&,始终为0
作用是:关闭(屏蔽)某二进制,重置为0
具体如下:
通常我们可把按位“与”操作&作为关闭某位(即将该位置0)的手段,例如我们想要关闭a数中的第3位,而又不影响其它位的现状,可以用一个数0xF7,即二进制数11110111去与a数作按位“与”运算:

10001000 a数
&
11110111 屏蔽数
=10000000

注意,这个数除第3位为0外,其它各位均为1,操作的结果只会将a数中的第3位置0,而a数的其它位不受影响。也就是说,若需要某个数的第n位关闭,只需要将该数与另一个数按位相与,另一个数除了相应的第n位为0外,其它各位都为1,以起到对其它各位的屏蔽作用。

位或 |


原理省略
特点是:与0按位|,原位不变,与1按位|,始终为1
作用是:打开某二进制位,重置为1
具体如下:
通常我们可把按位“与”操作|作为置位(即将该位置1)的手段,例如我们想要将a数中的第0位和1位置1,而又不影响其它位的现状,可以用一个数0x03,即二进制数00000011去与a数作按位“或”运算:

0x88 10001000 a数
|
0x03 00000011 置位数
=10001011

注意,这个数除第0、1位为1外,其它各位均为0,操作的结果只会将a数中的第0、1位置0,而a数的其它位不受影响。也就是说,若需要某个数的第n位置1,只需要将该数与另一个数按位相“或”,另一个数除了相应的第n位为1外,其它各位都为0,以起到对其它各位的屏蔽作用。

位异或^

原理省略
特点是:与0按位^,原位不变 ,与1按位^,反转该二进制位
作用有两个:

  1. 反转二进制位:

若需要某个数的第n位取反,只需要将该数与另一个数按位相“异或”,另一个数除了相应的第n位为1
外,其它各位都为0,以起到对其它各位的屏蔽作用。

  1. 直接交换两个变量的值:

例如,若有变量a=3,b=4,想要交换它们的值,可以做如下一组操作:
a^=b
b^=a
a^=b