bit
The LuaJIT BitOp library: bitwise operations on 32-bit integers.
All operands are normalized to signed 32-bit integers (modulo 2^32) and all results are signed 32-bit. Use bit.tohex or % 2^32 to display unsigned values. Shift counts and rotate counts are taken modulo 32.
Functions
bit.arshift(x: number, n: number): number
bit.arshift(x: number, n: number): number
- Arithmetic right shift of
xbynbits; the sign bit is replicated.
print(bit.arshift(-256, 4))
bit.band(x: number, ...: number): number
bit.band(x: number, ...: number): number
- Bitwise AND of all arguments.
bit.bnot(x: number): number
bit.bnot(x: number): number
- Bitwise NOT of
x(all bits inverted).
bit.bor(x: number, ...: number): number
bit.bor(x: number, ...: number): number
- Bitwise OR of all arguments.
bit.bswap(x: number): number
bit.bswap(x: number): number
- Swaps the byte order of
x(endianness conversion).
print(bit.tohex(bit.bswap(0x12345678)))
bit.bxor(x: number, ...: number): number
bit.bxor(x: number, ...: number): number
- Bitwise XOR of all arguments.
bit.lshift(x: number, n: number): number
bit.lshift(x: number, n: number): number
- Logical left shift of
xbynbits; zeros are shifted in.
bit.rol(x: number, n: number): number
bit.rol(x: number, n: number): number
- Rotates
xleft bynbits.
bit.ror(x: number, n: number): number
bit.ror(x: number, n: number): number
- Rotates
xright bynbits.
bit.rshift(x: number, n: number): number
bit.rshift(x: number, n: number): number
- Logical right shift of
xbynbits; zeros are shifted in.
bit.tobit(x: number): number
bit.tobit(x: number): number
- Normalizes
xto a signed 32-bit integer.
print(bit.tobit(0xffffffff))
print(bit.tobit(2^32 + 5))
bit.tohex(x: number, n?: number = 8): string
bit.tohex(x: number, n?: number = 8): string
- Converts
xto a hexadecimal string ofndigits, keeping the lowestndigits. - If
nis negative, uppercase digits are used and the digit count is-n. - The digit count is limited to 8 in absolute value.
print(bit.tohex(255))
print(bit.tohex(255, -4))