Bit-operasjoner
& = AND. 1 hvis begge bitsa er 1
| = OR. 1 hvis hvem som helst av bitsa er 1
^ = XOR. 1 hvis bitsa er forskjellige
~ = NOT. Inverterer alle bits
<< = LEFT SHIFT. bits å shifte << hvor mange plasser
>> = RIGHT SHIFT. bits å shifte >> hvor mange plasser

For eksempel, ta denne funksjonen:

bool Adafruit_BusIO_RegisterBits::write(uint32_t data) {
  uint32_t val = _register->read();

  // mask off the data before writing
  uint32_t mask = (1 << (_bits)) - 1;
  data &= mask;

  mask <<= _shift;
  val &= ~mask;          // remove the current data at that spot
  val |= data << _shift; // and add in the new data

  return _register->write(val, _register->width());
}

La oss si
val = 00101011
data = 6 (0110)
_bits = 3
_shift = 4

data = 6
val = 00101011

mask = (1 << (3)) - 1; = 7 / 0111
data &= mask =           6 / 0110

mask = 7 / 0111
data = 6 / 0110

mask <<= _shift;      = 96 / 01100000

val &= ~mask; = val &= -97 / 10011111;
  00000000
  10011111
val = 00000000

val |= data << _shift;
val |= 01100000;

  00000000
  01100000
= 01100000

val &= ~mask; = val &= -97 / 10011111;
00101011 &= 10011111 
= 00001011
  01100000

  01101011