//位操作运算不能对浮点型进行操作。在进行位操作时进行检查
local function check_int(n)
-- checking not float
if(n - math.floor(n) > 0) then
error("trying to use bitwise operation on non-integer!")
end
end
//把LUA Number转换成位模式并存储在table中
local function to_bits(n)
check_int(n)
if(n < 0) then
-- negative
return to_bits(bit.bnot(math.abs(n)) + 1)
end
-- to bits table
local tbl = {}
local cnt = 1
while (n > 0) do
local last = math.mod(n,2)
if(last == 1) then
tbl[cnt] = 1
else
tbl[cnt] = 0
end
n = (n-last)/2
cnt = cnt + 1
end
return tbl
end
//把二进制位table转换成LUA Number数据类型
local function tbl_to_number(tbl)
local n = table.getn(tbl)
local rslt = 0
local power = 1
for i = 1, n do
rslt = rslt + tbl[i]*power
power = power*2
end
return rslt
end
//把tbl_m和tbl_n扩展长度为位数。以两者中位数大的基准。并以零补充位置
local function expand(tbl_m, tbl_n)
local big = {}
local small = {}
if(table.getn(tbl_m) > table.getn(tbl_n)) then
big = tbl_m
small = tbl_n
e
LuaBit 对于LUA语言位操作符LUA语言实现,依赖于LUA Number的定义。(可参看未定义的实现部分)
最新推荐文章于 2024-11-26 02:00:00 发布
本文介绍了如何在Lua中实现位操作,包括检查非整数错误、将LUA Number转换为位模式、位运算如OR、AND、NOT、XOR以及左右移位,并提供了相关函数的详细实现。

&spm=1001.2101.3001.5002&articleId=46420123&d=1&t=3&u=3c95e65554934abf9ca6f11743036ad7)
2594

被折叠的 条评论
为什么被折叠?



