lshr( num, bits )
Shifts the bits of a number to the right, using logical shift.
The number.

The number of bits to shift.

The lshr() function takes a number and a bit count, and returns the result of shifting the bits of the number to the right by that count. This uses a "logical shift."

Numbers in PICO-8 are stored using a 32-bit fixed point format, with 16 bits for the integer portion, 16 bits for the fractional portion, and a twos complement representation for negative and positive values. Bit shifting uses the entire number representation. (See examples below.)

lshr() performs a "logical shift," which shifts all of the raw bits of the number, filling the highest bits with zeroes. The alternative to logical shift is "arithmetic shift." See shr().

Examples Edit

-- 8 = 0b00001000 binary
-- 1 = 0b00000001 binary
print(lshr(8, 3))  -- 1
-- 1.000 = 0b0001.0000 binary
-- 0.125 = 0b0000.0010 binary
print(lshr(1, 3))  -- 0.125
--   -1.000 = 0b1111111111111111.0 binary (two's complement)
-- 8191.875 = 0b0001111111111111.111 binary
print(lshr(-1,3))  -- 8191.875

See also Edit

Community content is available under CC-BY-SA unless otherwise noted.