Accessor LDB

UP


Accessor LDB

Accessor LDB

構文

ldb bytespec integer => byte
( setf ( ldb bytespec place ) new-byte )

発音

['lidib]['liduhb]['el'dee'bee]

引数と戻り値

bytespec - バイト指定子
integer - 整数
byte, new-byte - 非負の整数

定義

ldbbytespecで指定されたintegerのバイトを展開し返却します。

ldbは整数を返却し、 その内容は、 s(byte-size bytespec)p(byte-position bytespec)としたとき、 返却値の2^(s-1)から2^0までのビットと integer2^(p+s-1)から2^pまでを同じものとし、 その他を全て0ビットにしたものです。

setfldbは、 与えられたplaceに格納されている integer内部のバイトを修正するときに使用します。 ldbフォームがsetfに指定されたときの評価の順番は、 正確に左から右で行います。 この効果は、dpbの操作を実行し、 その結果をplace内に戻して格納するというものです。

例文

(ldb (byte 2 1) 10) =>  1
(setq a (list 8)) =>  (8)
(setf (ldb (byte 2 1) (car a)) 1) =>  1
a =>  (10)

副作用

なし。

影響

なし。

例外

なし。

参考

byte, byte-position, byte-size, dpb

備考

(logbitp j (ldb (byte s p) n))
   ==  (and (< j s) (logbitp (+ j p) n))

一般的に、

(ldb (byte 0 x) y) =>  0

上記の関係は全ての値x, y, zで正当です。

歴史的にはldbという名前はDEC PDP-10のアセンブリ言語から来ており、 load byteを意味する命令です。


TOP, Github