# "BitVector"(Data Structure) "BitVector"

represents a set built from an array of bits.

# Details   • Typically, the bits stored are generated from integers, so this is useful for representing sets of integers:
•  CreateDataStructure[ "BitVector",capacity] create a new "BitVector" of specified capacity Typed[x,"BitVector"] give x the type "BitVector"
• For a data structure of type "BitVector", the following operations can be used:
•  ds["BitAnd",dsi] combine the bits in ds and dsi using bitwise And time: O(n/8) ds["BitClear",k] set the kth bit in ds to 0 time: O(1) ds["BitClearAll"] set all the bits in ds to 0 time: O(n) ds["BitCount"] return the number of bits in ds that are set to 1 time: O(n) ds["BitGet",k] get the kth bit in ds time: O(1) ds["BitInvert",k] invert the value of the kth bit of ds time: O(1) ds["BitList"] return a list of bits that are set to 1 in ds time: O(n) ds["BitOr",dsi] combine the bits in ds and dsi using bitwise Or time: O(n/8) ds["BitSet",k] set the kth bit in ds to 1 time: O(1) ds["BitTest",k] return True if the kth bit of ds is set to 1 and False otherwise time: O(1) ds["BitXor",dsi] combine the bits in ds and dsi using bitwise Xor time: O(n/8) ds["Capacity"] return the number of bits that can be stored in ds time: O(1) ds["Copy"] return a copy of ds time: O(n) ds["OffBitList",dsi] return a list of the bits that are off in both ds and dsi time: O(n/8) ds["OnBitList",dsi] return a list of the bits that are on in both ds and dsi time: O(n/8) ds["Visualization"] return a visualization of ds time: O(n)
• The following functions are also supported:
•  dsi===dsj True, if dsi equals dsj FullForm[ds] full form of ds Information[ds] information about ds InputForm[ds] input form of ds Normal[ds] convert ds to a normal expression
• The numbering of bits is consistent with other bit operations such as BitSet so that 0 refers to the lowest bit.

# Examples

open allclose all

## Basic Examples(3)

A new "BitVector" can be created with CreateDataStructure:

Set the 20th bit to 1:

It is possible to test if a bit is set:

Extract a bit:

Invert a bit:

Get a list of the bits that are set:

Return an expression version of ds:

A visualization of the data structure can be generated:

Testing for common bits:

The bits that are on in both:

The bits that are off in both:

Combining:

The "BitVector" only contains bits that were on in both:

## Scope(1)

### Information(1)

A new "BitVector" can be created with CreateDataStructure:

Information about the data structure ds:

## Properties & Relations(2)

The numbering for bits in a "BitVector" is consistent with Power and bit operations such as BitSet.

Create two bit vectors:

Both bit vectors are initialized with zeros:

Equality can be tested with SameQ:

Change one of the bit vectors by setting a bit:

The bit vectors are no longer the same:

Inequality can be tested with UnsameQ: