[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: How to get the 2-complenent of a negative number in Lua 5.2?
- From: Niccolo Medici <niccolomedici@...>
- Date: Sun, 3 Jul 2016 13:23:57 +0300
Hi!
For a calculator I'm writing, that can display integers in hex/binary,
I want to display the hex (or binary) machine representation of
*negative* integers as well. The prevalent representation of negative
integers is known as "two's complement", but I don't at all care if
the Lua engine is running on a machine that uses some other
representation and that my calculator shows something other that 2's
complement in this case.
In Lua 5.1 and Lua 5.3 the solution is ridiculously simple:
-- Lua 5.1
> print(("%x"):format(-123456))
fffe1dc0
-- Lua 5.3
> print(("%x"):format(-123456))
fffffffffffe1dc0
This is perfect for me! (Converting this to binary is a simple and
efficient matter: by doing string replacement.) But, unfortunately, in
Lua 5.2 it fails:
-- Lua 5.2
> print(("%x"):format(-123456))
stdin:1: bad argument #1 to 'format' (not a non-negative number in
proper range)
Is there a solution that works in 5.2 as well?