位运算符可以直接对二进制数位进行操作

& (按位与)

  • 两个对应位都为1则得1,有0则得0按位与可以把某个二进制数位置0任何数位和0按位与结果为0,和1按位与结果不变
3 & 5:
3   0000 0011
5   0000 0101
    0000 0001

| (按位或)

  • 两个对应位都为0则得0,有1则得1按位或可以把某个二进制数位置1任何数位和0按位或结果不变,和1按位或结果为1
3 | 5:
3   0000 0011
5   0000 0101
    0000 0111

\^(按位异或)

  • 两个对应位相同则得0,不同则得1按位异或可以把某个二进制数位求反任何数位和0按位异或结果不变,和1按位异或,1变为0、0变为1
3 ^ 5:
3   0000 0011
5   0000 0101
    0000 0110

«(左移位运算符)、» (右移位运算符)

  • 可以把一个数据中的所有二进制为向左或向右移动n个位置,但不会改变参与计算的数字,格式为num << nnum >> n
  • 左移操作后,右边的空位置上一定补0
3 << 5
3   0000 0011
    0110 0000
  • 右移操作后,有符号数据左边空位置补符号位,无符号数据左边空位置补0
-48 >> 2
-48 1101 0000
    1111 0100
  • 如果移位操作过程中没有丢失有效数字

    • 左移n位相当于乘以2的n次方

    • 右移n位相当于除以2的n次方