Skip to main content

ldb

ldb Accessor

Syntax:

ldb bytespec integer ! byte

(setf (ldb bytespec place**)** new-byte**)**

Pronunciation:

[ lidib ] or [ lidεb ] or [ el d—e b—e ]

Arguments and Values:

bytespec—a byte specifier .

integer—an integer .

byte, new-byte—a non-negative integer .

Description:

ldb extracts and returns the byte of integer specified by bytespec.

ldb returns an integer in which the bits with weights 2(s1) through 20 are the same as those in integer with weights 2(p+s1) through 2p, and all other bits zero; s is (byte-size bytespec) and p is (byte-position bytespec).

setf may be used with ldb to modify a byte within the integer that is stored in a given place. The order of evaluation, when an ldb form is supplied to setf, is exactly left-to-right. The e↵ect is to perform a dpb operation and then store the result back into the place.

Examples:

(ldb (byte 2 1) 10) *!* 1 
(setq a (list 8)) *!* (8)
(setf (ldb (byte 2 1) (car a)) 1) *!* 1
a *!* (10)

See Also:

byte, byte-position, byte-size, dpb

Notes:

(logbitp j (ldb (byte s p) n))

(and (< j s) (logbitp (+ j p) n))

In general,

(ldb (byte 0 x) y) ! 0

for all valid values of x and y.

Historically, the name “ldb” comes from a DEC PDP-10 assembly language instruction meaning “load byte.”

Expanded Reference: ldb

tip

TODO: Please contribute to this page by adding explanations and examples

(ldb )