(ash i c) is the result of taking the two's complement
representation of the integer i and shifting it by c bits: shifting
left and padding with c0 bits if c is positive, shifting right
and dropping (abs c) bits if c is negative, and simply returning
i if c is 0.
The guard for ash requires that its arguments are integers.
Ash is a Common Lisp function. See any Common Lisp documentation for