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.
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