//位操作运算不能对浮点型进行操作。在进行位操作时进行检查
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 =
LuaBit 对于LUA语言位操作符LUA语言实现,依赖于LUA Number的定义。(可参看未定义的实现部分)
最新推荐文章于 2024-03-07 09:51:52 发布
本文介绍了如何在Lua中实现位操作,包括检查非整数错误、将LUA Number转换为位模式、位运算如OR、AND、NOT、XOR以及左右移位,并提供了相关函数的详细实现。
摘要由CSDN通过智能技术生成