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