Function ASH

UP


Function ASH

Function ASH

構文

ash integer count => shifted-integer

引数と戻り値

integer - 整数
count - 整数
shifted-integer - 整数

定義

ashintegerをバイナリとして扱うかのように 2進表現としたときの演算シフト処理を行います。

もしcountが正のとき、 ashintegercountの分だけ左に演算処理としてシフトします。 あるいは、countが負のときは右にシフトします。 シフトされた値は、integerと同じ符号で返却されます。

数学的に言うならば、 ashfloor(integer*2^count)の計算を実行します。 論理的に言うならば、 ashintegerの全てのビットを左に移動し右からゼロビットを追加するか、 あるいはそれらを右に移動してビットを切り捨てます。

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))

TOP, Github