Accessor LDB
ldb bytespec integer => byte
( setf ( ldb bytespec place ) new-byte )
['lidib]か['liduhb]か['el'dee'bee]
bytespec - バイト指定子
integer - 整数
byte, new-byte - 非負の整数
ldbはbytespecで指定されたintegerのバイトを展開し返却します。
ldbは整数を返却し、 その内容は、 sを(byte-size bytespec)、pを(byte-position bytespec)としたとき、 返却値の2^(s-1)から2^0までのビットと integerの2^(p+s-1)から2^pまでを同じものとし、 その他を全て0ビットにしたものです。
setfのldbは、 与えられた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を意味する命令です。