function decToBin(num)
if num == 0 then return "0" end
local bin = ""
while num > 0 do
local remainder = num % 2
bin = remainder .. bin
num = math.floor(num / 2)
end
return bin
end
-- 示例
print(decToBin(10)) -- 输出: 1010
print(decToBin(255)) -- 输出: 11111111
print(decToBin(256)) -- 输出: 100000000
这个函数decToBin接受一个十进制数num作为输入,并初始化一个空字符串bin来构建二进制表示。在while循环中,它不断地将num除以2,并将余数添加到bin字符串的前面。这是因为二进制数是从右到左构建的(即最低位到最高位)。循环继续直到num变为0。
每次循环中,使用num % 2来获取当前num除以2的余数(0或1),这就是当前的二进制位。然后,使用math.floor(num / 2)来更新num,准备下一次迭代。math.floor函数确保了即使在Lua中默认的浮点数运算下,我们也能得到正确的整数除法结果。
这个简单的函数能够处理任何非负整数的十进制到二进制的转换。如果需要处理负数,二进制表示将更加复杂,通常涉及到补码表示,这在函数的这个基本形式中没有直接处理。
|