# bit Module¶

Since Origin / Contributor Maintainer Source

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 shift
• `shift` 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 argument
• `val2` 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 argument
• `val2` 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 number
• `pos1` 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 test
• `position` 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 test
• `position` 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 shift
• `shift` 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
``````