# 2.4.11 布尔向量类型

布尔向量 是 lisp 一维数组，其数组元素只能是 t 或 nil。

布尔向量的打印表示和字符串很像。不过布尔向量的打印表示的最前面比字符串多了 "#&"，后面在跟着向量长度。再紧接的字符串的内容以位图的形式描述了布尔向量的内容。字符串中的每一个字符都包含了8个比特的信息，这8位的信息描述了布尔向量的接下来的8个元素，其中1代表t，0代表nil。字符的最后一位的信息对应了布尔向量最后一个元素。

```
(make-bool-vector 3 t)
    => #&3"^G"
(make-bool-vector 3 nil)
    => #&3"^@"
```

上面这个例子中的结果是正确的，因为 'C-g' 的二进制代码是 111， 而 'C-@' 表示代码 000.

如果打印表示中的字符不是8位的，那么多余的字符便没有任何意义。比如下面这个例子，其中的两个布尔向量是 equal的，因为只有前三个位信息被使用了。

```
(equal #&3"\377" #&3"\007")
     ⇒ t
```
