在开发过程中偶然一次用到了位操作,分享一下
事情经过是这样的服务器那边想通过发送一个奖励的掩码让我这边自己判断奖励的领取情况,什么,掩码?这就有点懵逼了,果断上网查些资料
https://www.cnblogs.com/jadeboy/p/4038332.html
说白了就是十进制转化为二进制进行相关操作,我这边就是直接运用了自带的库
例如发过来的掩码为25,五种档次的领奖情况为11001
local bit = require "bit"
local AwardNum = 5
local TheAwardList = {}
for i = 1, AwardNum do
if bit.band(1, bit.rshift(rsp.AwardMask, i - 1)) > 0 then
TheAwardList[i] = 1
else
TheAwardList[i] = 0
end
end
•bit.bnot(a) - 返回一个a的补充 •bit.band(w1,...) - 返回w的位与 •bit.bor(w1,...) - 返回w的位或 •bit.bxor(w1,...) - 返回w的位异或 •bit.lshift(a,b) - 返回a向左偏移到b位 •bit.rshift(a,b) - 返回a逻辑右偏移到b位 •bit.arshift(a,b) - 返回a算术偏移到b位 •bit.mod(a,b) - 返回a除以b的整数余数
仅是使用未得位运算精髓,有误请指正