CLHS: Accessor MASK-FIELD

#

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:

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

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

Copyright 1996-2005, LispWorks Ltd. All rights reserved.