** Bit Vector Representations**

Subsets of a finite set can be efficiently represented as bit
vectors,
in which a given bit position is a ` 1` if the corresponding item
is an element of the subset.
Representing a 128-element set takes only 4 32-bit words of memory.

Operations on sets can be done on whole words.

Set operation: | Bit vector operation: |

∈ | ∧ with vector for element |

or test bit | |

∩ | ∧ |

∪ | ∨ |

set complement of A | ¬ A |

set difference, A - B | A ∧ ¬ B |

Operations on the bit vector representation are * O(n/32) *,
compared to * O(n · m) * with other methods.

Example: assign a bit for each program variable or subexpression.