% Function ASH
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))