mask-field (ANSI and GNU Common Lisp Document)

Next: most-positive-fixnum, Previous: ldb-test, Up: Numbers Dictionary

#### 12.2.71 mask-field [Accessor]

`mask-field` bytespec integer ⇒ masked-integer

(setf (`mask-field` bytespec place) new-masked-integer)

#### Arguments and Values::

bytespec—a byte specifier.

integer—an integer.

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

#### Description::

mask-field performs a “mask” operation on integer. It returns an integer that has the same bits as integer in the byte specified by bytespec, but that has zero-bits everywhere else.

setf may be used with mask-field to modify a byte within the integer that is stored in a given place. The effect is to perform a deposit-field operation and then store the result back into the place.

#### Examples::

     (mask-field (byte 1 5) -1) ⇒  32
     (setq a 15) ⇒  15
     (mask-field (byte 2 0) a) ⇒  3
     a ⇒  15
     (setf (mask-field (byte 2 0) a) 1) ⇒  1
     a ⇒  13

#### See Also::

byte , ldb

#### Notes::

     (ldb bs (mask-field bs n)) ≡ (ldb bs n)
     (logbitp j (mask-field (byte s p) n))
       ≡ (and (>= j p) (< j s) (logbitp j n))
     (mask-field bs n) ≡ (logand n (dpb -1 bs 0))