位运算符

  • 只能用于整型数

    • 位运算符:

      • &:按位与
      • |:按位或
      • ~:按位异或
      • :逻辑右移,会使用0填充空位

      • <<:逻辑左移,会使用0填充空位
        • 位移数:逻辑左移/右移几位(0xff << 12:逻辑左移12位)
        • 位移数负数,则代表反方向的意思(a>>n与a<<-n等价)
        • Lua中没有算数位移,可以使用除以2的整数次幂实现(x//16)
      • 一元运算~:按位取反
        1. print(string.format("%02x", 0xff & 0xf0)) --与运算, 输出:f0
        2. print(string.format("%02x", 0xff | 0xf0)) --或运算, 输出:ff
        3. print(string.format("%02x", 0xff ~ 0xf0)) --异或运算 输出:0f
        4. print(string.format("%02x", ~0xff)) --按位取反, 输出:ffffffffffffff00
    • 注:为运算针对64位,对32位的算法可能出现问题。在操作32位算法时,右移抹去高32位即可。