zoukankan      html  css  js  c++  java
  • 位运算

    位运算符

    含义 运算符 说明 示例
    左移 << 相当于十进制的*2 0011=>0110(3*2=6)
    右移 >> 相当于十进制的//2 0110=>0011(6//2=3)
    按位或 | 有一位为1则为1

    0 0 1 1

    1 0 1 1

    1 0 1 1

    按位与 & 两位都为1才为1

    0 0 1 1

    1 0 1 1

    0 0 1 1

    按位取反 ~  

    0 0 1 1

    1 1 0 0

    按位异或 ^ 相同为0 不同为1

    0 0 1 1

    1 0 0 0

    1 0 1 1

    XOR-异或

    相同为0,不同为1。

    异或的四大定律

    • 恒等率
    • 归零率
    • 交换律
    • 集合率

    恒等率

    一个数和0做XOR运算等于本身

    a⊕0 = a
    

    归零率

    一个数和其本身做XOR运算等于0

    a⊕a = 0

    交换率和结合率一起使用

    a⊕b⊕a = (a⊕a)⊕b = 0⊕b = b
    

    实战常用技巧 

    判断奇偶性

    • x % 2 == 1 --> (x & 1) == 1
    • x % 2 == 0 --> (x & 1) == 0

    取两个数的平均值(二分常用)

    • mid = (left + right) // 2 --> (left + right) >> 1

    把最低位的1 置为0

    • x & (x - 1)

    得到最低位的1

    • x & - x

    x & ~x => 0

  • 相关阅读:
    连续奇数
    50:数根
    38:花生采摘
    素数对
    17:字符串判等
    2702:密码翻译
    27:单词翻转
    15:整理药名
    12:加密的病历单
    09:密码翻译
  • 原文地址:https://www.cnblogs.com/Xuuuuuu/p/14317268.html
Copyright © 2011-2022 走看看