From Jason Turner

[conventions]

Diff to HTML by rtfpessoa

tmp/tmpov3ohr9y/{from.md → to.md} RENAMED
@@ -87,21 +87,22 @@ bitmask{}& operator^=(bitmask{}& X, bitmask{} Y) {
87
  X = X ^ Y; return X;
88
  }
89
  ```
90
 
91
  Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
92
- particular bitmask type. All such elements have distinct values such
93
- that, for any pair *Ci* and *Cj*, *Ci* & *Ci* is nonzero and *Ci* & *Cj*
94
- is zero.
 
95
 
96
  The following terms apply to objects and values of bitmask types:
97
 
98
  - To *set* a value *Y* in an object *X* is to evaluate the expression
99
- *X* |= *Y*.
100
  - To *clear* a value *Y* in an object *X* is to evaluate the expression
101
- *X* &= ~*Y*.
102
- - The value *Y* *is set* in the object *X* if the expression *X* & *Y*
103
  is nonzero.
104
 
105
  ##### Character sequences <a id="character.seq">[[character.seq]]</a>
106
 
107
  The C standard library makes widespread use of characters and character
 
87
  X = X ^ Y; return X;
88
  }
89
  ```
90
 
91
  Here, the names *C0*, *C1*, etc. represent *bitmask elements* for this
92
+ particular bitmask type. All such elements have distinct, nonzero values
93
+ such that, for any pair *Ci* and *Cj* where *i* != *j*, *Ci* & *Ci* is
94
+ nonzero and *Ci* & *Cj* is zero. Additionally, the value 0 is used to
95
+ represent an *empty bitmask*, in which no bitmask elements are set.
96
 
97
  The following terms apply to objects and values of bitmask types:
98
 
99
  - To *set* a value *Y* in an object *X* is to evaluate the expression
100
+ *X* `|=` *Y*.
101
  - To *clear* a value *Y* in an object *X* is to evaluate the expression
102
+ *X* `&= ~`*Y*.
103
+ - The value *Y* *is set* in the object *X* if the expression *X* `&` *Y*
104
  is nonzero.
105
 
106
  ##### Character sequences <a id="character.seq">[[character.seq]]</a>
107
 
108
  The C standard library makes widespread use of characters and character