ToC DocOverview CGDoc RelNotes Index PermutedIndex
Allegro CL
Home Previous Up Next Table of Contents Index
  ANSI Common Lisp   12 Numbers   12.2 Dictionary of Numbers

12.2.69 ldb Accessor

Syntax:
ldb bytespec integer    byte

(setf (ldb bytespec place) new-byte)

Pronunciation:
[ 'lidib ] or [ 'lidEb ] or [ 'el'dê'bê ]

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(s-1) through 20 are the same as those in integer with weights 2(p+s-1) 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 effect 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."

Allegro CL Implementation Details:
None.

Home Previous Up Next Table of Contents Index
© Franz Inc. 1998-2019 - File last updated 02-07-2019