bit Module¶
Since | Origin / Contributor | Maintainer | Source |
---|---|---|---|
2014-12-24 | https://github.com/LuaDist/bitlib, Zeroday | Zeroday | bit.c |
Bit manipulation support, on 32bit integers.
bit.arshift()¶
Arithmetic right shift a number equivalent to value >> shift
in C.
Syntax¶
bit.arshift(value, shift)
Parameters¶
value
the value to shiftshift
positions to shift
Returns¶
the number shifted right (arithmetically)
Example¶
bit.arshift(3, 1) -- returns 1
-- Using a 4 bits representation: 0011 >> 1 == 0001
bit.band()¶
Bitwise AND, equivalent to val1 & val2 & ... & valn
in C.
Syntax¶
bit.band(val1, val2 [, ... valn])
Parameters¶
val1
first AND argumentval2
second AND argument...valn
...nth AND argument
Returns¶
the bitwise AND of all the arguments (number)
Example¶
bit.band(3, 2) -- returns 2
-- Using a 4 bits representation: 0011 & 0010 == 0010
bit.bit()¶
Generate a number with a 1 bit (used for mask generation). Equivalent to 1 << position
in C.
Syntax¶
bit.bit(position)
Parameters¶
position
position of the bit that will be set to 1
Returns¶
a number with only one 1 bit at position (the rest are set to 0)
Example¶
bit.bit(4) -- returns 16
bit.bnot()¶
Bitwise negation, equivalent to ~value in C.
Syntax¶
bit.bnot(value)
Parameters¶
value
the number to negate
Returns¶
the bitwise negated value of the number
bit.bor()¶
Bitwise OR, equivalent to val1 | val2 | ... | valn
in C.
Syntax¶
bit.bor(val1, val2 [, ... valn])
Parameters¶
val1
first OR argument.val2
second OR argument....valn
...nth OR argument
Returns¶
the bitwise OR of all the arguments (number)
Example¶
bit.bor(3, 2) -- returns 3
-- Using a 4 bits representation: 0011 | 0010 == 0011
bit.bxor()¶
Bitwise XOR, equivalent to val1 ^ val2 ^ ... ^ valn
in C.
Syntax¶
bit.bxor(val1, val2 [, ... valn])
Parameters¶
val1
first XOR argumentval2
second XOR argument...valn
...nth XOR argument
Returns¶
the bitwise XOR of all the arguments (number)
Example¶
bit.bxor(3, 2) -- returns 1
-- Using a 4 bits representation: 0011 ^ 0010 == 0001
bit.clear()¶
Clear bits in a number.
Syntax¶
bit.clear(value, pos1 [, ... posn])
Parameters¶
value
the base numberpos1
position of the first bit to clear...posn
position of thet nth bit to clear
Returns¶
the number with the bit(s) cleared in the given position(s)
Example¶
bit.clear(3, 0) -- returns 2
bit.isclear()¶
Test if a given bit is cleared.
Syntax¶
bit.isclear(value, position)
Parameters¶
value
the value to testposition
bit position to test
Returns¶
true if the bit at the given position is 0, false otherwise
Example¶
bit.isclear(2, 0) -- returns true
bit.isset()¶
Test if a given bit is set.
Syntax¶
bit.isset(value, position)
Parameters¶
value
the value to testposition
bit position to test
Returns¶
true if the bit at the given position is 1, false otherwise
Example¶
bit.isset(2, 0) -- returns false
bit.lshift()¶
Left-shift a number, equivalent to value << shift
in C.
Syntax¶
bit.lshift(value, shift)
Parameters¶
value
the value to shiftshift
positions to shift
Returns¶
the number shifted left
Example¶
bit.lshift(2, 2) -- returns 8
-- Using a 4 bits representation: 0010 << 2 == 1000
bit.rshift()¶
Logical right shift a number, equivalent to ( unsigned )value >> shift
in C.
Syntax¶
bit.rshift(value, shift)
Parameters¶
value
the value to shift.shift
positions to shift.
Returns¶
the number shifted right (logically)
Example¶
bit.rshift(2, 1) -- returns 1
-- Using a 4 bits representation: 0010 >> 1 == 0001
bit.set()¶
Set bits in a number.
Syntax¶
bit.set(value, pos1 [, ... posn ])
Parameters¶
value
the base number.pos1
position of the first bit to set....posn
position of the nth bit to set.
Returns¶
the number with the bit(s) set in the given position(s)
Example¶
bit.set(2, 0) -- returns 3