Function ASH
ash integer count => shifted-integer
integer - 整数
count - 整数
shifted-integer - 整数
ashはintegerをバイナリとして扱うかのように 2進表現としたときの演算シフト処理を行います。
もしcountが正のとき、 ashはintegerをcountの分だけ左に演算処理としてシフトします。 あるいは、countが負のときは右にシフトします。 シフトされた値は、integerと同じ符号で返却されます。
数学的に言うならば、 ashはfloor(integer*2^count)の計算を実行します。 論理的に言うならば、 ashはintegerの全てのビットを左に移動し右からゼロビットを追加するか、 あるいはそれらを右に移動してビットを切り捨てます。
ashは 整数が内部においてどのように表現されているかに関わらず、 integerを2の補数として表現されたかのように振る舞うと定義できます。
(ash 16 1) =>  32
(ash 16 0) =>  16
(ash 16 -1) =>  8
(ash -100000000000000000000000000000000 -100) =>  -79なし。
integerが整数ではないとき、型type-errorのエラーを通知するべきです。 countが整数ではないとき、型type-errorのエラーを通知するべきです。 型arithmetic-errorを通知するかもしれません。
なし。
(logbitp j (ash n k))
 ==  (and (>= j k) (logbitp (- j k) n))