User Tools


Function BIT-AND, BIT-ANDC1, BIT-ANDC2, BIT-EQV, BIT-IOR, BIT-NAND, BIT-NOR, BIT-NOT, BIT-ORC1, BIT-ORC2, BIT-XOR

Syntax

  • bit-and bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-andc1 bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-andc2 bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-eqv bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-ior bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-nand bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-nor bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-orc1 bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-orc2 bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-xor bit-array1 bit-array2 &optional opt-argresulting-bit-array
  • bit-not bit-array &optional opt-argresulting-bit-array

Arguments and Values

Bit-wise Logical Operations on Bit Arrays

Function Operation
bit-and and
bit-eqv equivalence (exclusive nor)
bit-not complement
bit-ior inclusive or
bit-xor exclusive or
bit-nand complement of bit-array1 and bit-array2
bit-nor complement of bit-array1 or bit-array2
bit-andc1 and complement of bit-array1 with bit-array2
bit-andc2 and bit-array1 with complement of bit-array2
bit-orc1 or complement of bit-array1 with bit-array2
bit-orc2 or bit-array1 with complement of bit-array2

Description

These functions perform bit-wise logical operations on bit-array1 and bit-array2 and return an array of matching rank and dimensions, such that any given bit of the result is produced by operating on corresponding bits from each of the arguments.

In the case of bit-not, an array of rank and dimensions matching bit-array is returned that contains a copy of bit-array with all the bits inverted.

If opt-arg is of type (array bit) the contents of the result are destructively placed into opt-arg. If opt-arg is the symbol t, bit-array or bit-array1 is replaced with the result; if opt-arg is nil or omitted, a new array is created to contain the result.

The table below indicates the logical operation performed by each of the functions.

Examples

(bit-and #*1100 #*1010)

#*1000

(bit-andc1 #*1100 #*1010)

#*0010

(bit-xor #*1100 #*1010)

#*0110

(defparameter *bit-array* #*11101010)

*BIT-ARRAY*

(bit-and *bit-array* #*01101011)

#*01101010

(defparameter *bit-array-2* (bit-andc2 *bit-array* #*00110011 t))

*BIT-ARRAY-2*

(eq *bit-array-2* *bit-array*)

true

(setf *bit-array* #*11101010)

#*11101010

(bit-not *bit-array*)

#*00010101

(defparameter *bit-array-3* (make-array 8 :element-type 'bit))

*BIT-ARRAY-3*

(setf *bit-array-2* (bit-not *bit-array* *bit-array-3*))

#*00010101

*bit-array-3*

#*00010101

(equal *bit-array-2* *bit-array-3*)

true

Affected By

None.

Exceptional Situations

None.

See Also

Notes

None.