rshift

rshift (value shiftCount -- shiftedValue)

Inputs

Outputs

rshift consumes two Whole values. value provides the bits to shift and the schema of the result. shiftCount provides the shift amount and may use a different Whole schema.

The bits of value move to the right. The result always keeps the same schema as value.

Behavior

Example

{} () {} [
  "-- nat32 --" printCompilerMessage
  12n32 2 rshift printStack _:;
  12n32 1i8 rshift printStack _:;

  "-- nat8 high bits --" printCompilerMessage
  0x80n8 1 rshift printStack _:;

  "-- zero and unknown shift --" printCompilerMessage
  unknownShift: 0n32 dynamic;
  0n32 unknownShift rshift printStack _:;

  "-- unknown value and zero shiftCount --" printCompilerMessage
  unknownNat: 0n32 dynamic;
  unknownNat 0 rshift printStack _:;

  "-- int32 --" printCompilerMessage
  -4 1 rshift printStack _:;
  -1 31 rshift printStack _:;
  1 31 rshift printStack _:;
] "main" exportFunction

Expected Output During Compilation

-- nat32 --
3n32
6n32
-- nat8 high bits --
64n8
-- zero and unknown shift --
0n32
-- unknown value and zero shiftCount --
Nat32
-- int32 --
-2
-1
0

See also