% Accessor LDB
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
を意味する命令です。