2-6 Shift Right Signed from Unsigned

If your machine does not have the shift right signed instruction, it may be computed using the formulas shown below. The first formula is from [GM], and the second is based on the same idea. Assuming the machine has mod 64 shifts, the first four formulas hold for 0 n 31, and the last holds for 0 n 63. The last formula holds for any n if by "holds" we mean "treats the shift amount to the same modulus as does the logical shift."

When n is a variable, each formula requires five or six instructions on a basic RISC.

graphics/02icon51.gif

 

In the first two formulas, an alternative for the expression graphics/02icon52.gifis 1 << 31 - n.

If n is a constant, the first two formulas require only three instructions on many machines. If n = 31, the function can be done in two instructions with graphics/02icon53.gif