Safe Shifts
It is safe to shift (<<, >>) a value of type T where `β = sizeof(T) * 8 (with SafeUnsigned value
- by 0 bits, in which case the result is the value unchanged
- by
bitsof(T)bits, in which case the result iszero(T) - by
-bitsof(T)bits, in which case the result iszero(T) - by ⦃1, ..,
bitsof(T)-1⦄- the result is strictly less than any nonzero value given
- the result, given a zero value remains zero
- by ⦃-1, ..,
-(bitsof(T)-1)⦄- the result is strictly greater than any nonzero value given
- the result, given a zero value remains zero
of type T by 0 bits (unchanged) or by ±β bits where β ∈ ⦃0, 1, .., bitsof(T)⦄.
An OverflowError occurs when there is an attempt to shift a value of safe type T by a magnitude greater than ±bitsof(T).