is there a recommended way to check if certain bits are set or not in a number? I didn’t find anything in the reference. On the web i see that there is a Lua bit library do we have that available?
@piinthesky - try the link below. I looked into this ages ago when I was trying to duplicate the Elite Universe. In the end I found a spreadsheet with the galaxies and planets calculated. Bit of a cheat - bit of binary code and a few specific numbers to massive spreadsheet.
Good luck with it and could you post your results if you manage to get there?
What you are looking for is a bit mask.
Simply put you use a bitwise AND operation and a comparison to determine if the bit is set.
In this example I’m using a bit shift operator to create the necessary mask.
function isBitSet(bit, value)
local mask = 0x1 << bit
return (value & mask) > 0
end
-- 3rd bit of 0b1011 (binary)
print(isBitSet(3, 11)) -- true
-- Roughly evaluates to:
-- mask = 0b0001 << 3 = 0b1000
-- (0b1011 & 0b1000) > 0
As for the bit library, the bitwise operators are built in to Lua 5.4 (which Codea uses). The bit library was used for Lua 5.1 I believe.
1 Like
@Steppers Perfect, thanks a lot