Previous: Bit Vectors, Up: Sequences Arrays Vectors


12.7 Functions That Operate on Bit Vectors

Here are some functions that relate to bit vectors:

— Function: bit-vector-p object

This function returns t if object is a bit vector.

          (bit-vector-p #*01)
               ⇒ t
          (bit-vector-p [0 1])
               ⇒ nil
          (bit-vector-p "01")
               ⇒ nil
— Function: bitp object

This function returns t if object is either 0 or 1.

— Function: bit-vector &rest bits

This function creates and returns a bit vector whose elements are the arguments bits. Each argument must be a bit, i.e. one of the two integers 0 or 1.

          (bit-vector 0 0 0 1 0 0 0 0 1 0)
               ⇒ #*0001000010
          (bit-vector)
               ⇒ #*
— Function: make-bit-vector length bit

This function creates and returns a bit vector consisting of length elements, each initialized to bit, which must be one of the two integers 0 or 1.

          (setq picket-fence (make-bit-vector 9 1))
               ⇒ #*111111111
— Function: bvconcat &rest sequences

This function returns a new bit vector containing all the elements of the sequences. The arguments sequences may be lists, vectors, or bit vectors, all of whose elements are the integers 0 or 1. If no sequences are given, an empty bit vector is returned.

The value is a newly constructed bit vector that is not eq to any existing bit vector.

          (setq a (bvconcat '(1 1 0) '(0 0 1)))
               ⇒ #*110001
          (eq a (bvconcat a))
               ⇒ nil
          (bvconcat)
               ⇒ #*
          (bvconcat [1 0 0 0 0] #*111 '(0 0 0 0 1))
               ⇒ #*1000011100001

For other concatenation functions, see mapconcat in Mapping Functions, concat in Creating Strings, vconcat in Vector Functions, and append in Building Lists.

The append function provides a way to convert a bit vector into a list with the same elements (see Building Lists):

     (setq bv #*00001110)
          ⇒ #*00001110
     (append bv nil)
          ⇒ (0 0 0 0 1 1 1 0)