以下所有操作均可以通过递归DFS每一位并作相应判断实现。但以下写法实现简洁、常数较小,不失为一种优美的技巧。
下文采用$S_i$表示第$i$个集合,$\text{msk}$表示其二进制表示。
简单集合运算
- 并:$S_1 \cup S_2 \leftarrow \text{msk}_1 \mid \text{msk}_2$
- 交:$S_1 \cap S_2 \leftarrow \text{msk}_1\space\&\space\text{msk}_2$
- 差:$S_1 \setminus S_2 \leftarrow \text{msk}_1\space\&\space(\sim\text{msk}_2)$
- (相对于该二进制数类型最大值的)补集:$\sim\text{msk}$
- 对称差集:$S_1 \Delta S_2 \leftarrow {\text{msk}_1}^{\space\land}\space \text{msk}_2$