function simpletobin(num) local s = "" while num ~= 0 do local bit = math.mod(num, 2) num = math.floor(num / 2) s = bit .. s end while string.len(s) < 64 do s = "0" .. s end return s end function tobin(num) local sign = false if num < 0 then sign = true num = -num end local whole = math.floor(num) local part = num - whole local x = 0 local n = 0 local first = true while true do local bit = math.mod(whole, 2) whole = math.floor(whole / 2) if whole ~= 0 then if bit == 1 then x = x + 2^n end else break end n = n + 1 end local m = n + 1023 while part ~= 0 do part = 2 * part local b = math.floor(part) x = x * 2 + b n = n + 1 part = part - b end while n < 52 do x = x * 2 n = n + 1 end while m ~= 0 do local bit = math.mod(m, 2) m = math.floor(m / 2) if bit == 1 then x = x + 2^n end n = n + 1 end if sign then x = x + 2^63 end return simpletobin(x) end