Bit_Operations module

bit_scan_reverse

procedure · 1 overloadSource

The 1-based position of the highest set bit of input, which is also the number of bits needed to hold it (so floor(log2) plus one). Returns 0 when no bit is set.

A negative signed integer has its top bit set, so the result is the full width of the type.

ExampleOpen in playground ↗
assert(bit_scan_reverse(cast(u32) 1) == 1);
assert(bit_scan_reverse(cast(u32) 0b1000) == 4);
assert(bit_scan_reverse(cast(u64) 0xFFFF_FFFF_FFFF_FFFF) == 64);
assert(bit_scan_reverse(cast(s16) -1) == 16);
assert(bit_scan_reverse(cast(u32) 0) == 0);
bit_scan_reverse :: (input: $T) -> s32

Parameters

input: $T

Returns

s32

See also