Skip to main content

bit_count()

bit_count(x, bits) → bigint Count the number of bits set in x (treated as bits-bit signed integer) in 2’s complement representation:

bitwise_and()

bitwise_and(x, y) → bigint Returns the bitwise AND of x and y in 2’s complement representation. Bitwise AND of 19 (binary: 10011) and 25 (binary: 11001) results in 17 (binary: 10001):
bitwise_not(x) → bigint Returns the bitwise NOT of x in 2’s complement representation (NOT x = -x - 1):

bitwise_or()

bitwise_or(x, y) → bigint Returns the bitwise OR of x and y in 2’s complement representation. Bitwise OR of 19 (binary: 10011) and 25 (binary: 11001) results in 27 (binary: 11011):

bitwise_xor()

bitwise_xor(x, y) → bigint Returns the bitwise XOR of x and y in 2’s complement representation. Bitwise XOR of 19 (binary: 10011) and 25 (binary: 11001) results in 10 (binary: 01010):

bitwise_left_shift()

bitwise_left_shift(value, shift) → [same as value] Returns the left shifted value of value. Shifting 1 (binary: 001) by two bits results in 4 (binary: 00100):
Shifting 5 (binary: 0101) by two bits results in 20 (binary: 010100):
Shifting a value by 0 always results in the original value:
Shifting 0 by a shift always results in 0:

bitwise_right_shift()

bitwise_right_shift(value, shift) → [same as value] Returns the logical right shifted value of value. Shifting 8 (binary: 1000) by three bits results in 1 (binary: 001):
Shifting 9 (binary: 1001) by one bit results in 4 (binary: 100):
Shifting a value by 0 always results in the original value:
Shifting a value by 64 or more bits results in 0:
Shifting 0 by a shift always results in 0:

bitwise_right_shift_arithmetic()

bitwise_right_shift_arithmetic(value, shift) → [same as value] Returns the arithmetic right shifted value of value. Returns the same values as bitwise_right_shift() when shifting by less than 64 bits. Shifting by 64 or more bits results in 0 for a positive and -1 for a negative value: