bit

The LuaJIT BitOp library: bitwise operations on 32-bit integers.


Functions

bit.arshift(x: number, n: number): number

bit.arshift(x: number, n: number): number

  • Arithmetic right shift of x by n bits; 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 x by n bits; zeros are shifted in.

bit.rol(x: number, n: number): number

bit.rol(x: number, n: number): number

  • Rotates x left by n bits.

bit.ror(x: number, n: number): number

bit.ror(x: number, n: number): number

  • Rotates x right by n bits.

bit.rshift(x: number, n: number): number

bit.rshift(x: number, n: number): number

  • Logical right shift of x by n bits; zeros are shifted in.

bit.tobit(x: number): number

bit.tobit(x: number): number

  • Normalizes x to 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 x to a hexadecimal string of n digits, keeping the lowest n digits.
  • If n is 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))