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.
In the first two formulas, an alternative for
the expression is 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