位运算介绍

  • 1.左移 <<

    表示二进制位左移一位,末位补0---在数值上相当于乘2。

  • 2.右移 >>

    表示二进制位右移一位,末位丢弃---在数值上相当于除以2。

  • 3.and (与) &

    两个二进制数对应位(位数少的前面补0)进行&操作。
    1&1=1,其余情况都为0
    技巧:一般用于二进制下的取位操作。想知道二进制下的某位是否为1,可以&该位对应的十进制数,如果返回的是原数则为1;反之为0。最常用的是a&1判断奇偶性,返回1位奇数,返回0位偶数。

  • 4.or (或) |

    两个二进制数对应位(位数少的前面补0)进行|操作。
    0&0=0,其余情况都为1

  • 5.取反 ~

    二进制数每个位对应取反。

  • 6.异或 ^

    判断两个二进制数对应位(位数少前面补0)是不是一样,相同为0,不同为1相当于不进位的加法运算。
    技巧:一个二进制数 ^0不变,^1最后一位取反。
    同一个数异或两次和异或一次互为逆运算,即异或两次原数不变。

易错点总结

  • 1.取反坑点:例如一个int类型的数据1101,取反后不是0010。int类型一共有32位,故前面还有28位取反为1.
  • 2.请一定注意优先级问题!!!请一定注意优先级问题!!!请一定注意优先级问题!!!
    图片说明
    故a^b==c^d代表的意思是a^(b==c)^d,正确写法是(a^b)==(c^d),请一定注意括号。

位运算基础