Accessor mask-field

Syntax:

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:

12.8.0 9mask-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.

12.8.0 10setf 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

Side Effects:

None.

Affected By:

None.

Exceptional Situations:

None.

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))