lua5.1不支持位操作 自己实现
--数字转二进制 代码如下 其中需要注意的地方是 num = num / 2 并不像C中只得整数部分 所以需要处理一下值 用到了lua中math库的math.modf()函数 函数用法如下所示
print(math.modf(12.34)) ---》 12 0.34
数字转二进制代码
--数字转二进制
function ToSecond(num)
local str = ""
local tmp = num
while (tmp > 0) do
if (tmp % 2 == 1) then
str = str .. "1"
else
str = str .. "0"
end
tmp = math.modf(tmp / 2)
end
str = string.reverse(str)
return str
end
接下来的位运算 按位或 按位与 按位取反 由于各个数字转为二进制后的长度不一定一样长 所以首先需要将要比较的两个数字先转为二进制 并且为他们补齐长度 代码如下
--先补齐两个数字的二进制位数
function makeSameLength(num1, num2)
local str1 = ToSecond(num1)
local str2 = ToSecond(num2)
local len1 = string.len(str1)
local len2 = string.len(str2)
print("len1 = " .. len1)
print("len2 = " .. len2)
local len = 0
local x = 0
if (len1 > le