Per posar bits a 0 fem servir la funció and (i lògica) entre la variable i la màscara. Els bits que estiguin a 0 a la màscara seran desactivats i els que estiguin a 1 es mantindran inalterats. El següent diagrama descriu el procediment per a una variable W.

W = W & 0b11110000
Podem definir una macro que ens permeti desactivar un bit concret amb una funció senzilla. Per fer-ho, posarem aquesta definició a la inicialització del programa:
#define clrbit(var, bit) ((var) &= ~(1 << (bit)))
I dins del programa podem fer-la servir com es mostra a continuació:
clrbit(Valor, 1); // Posa a zero el bit 1
Per posar bits a 1 fem servir la funció ior (o inclusiva) entre la variable i la màscara. Els bits que estiguin a 1 a la màscara seran activats i els que estiguin a 0 es mantindran inalterats. El següent diagrama descriu el procediment per a una variable W.

W = W | 0b11110000
Podem definir una macro que ens permeti activar un bit concret amb una funció senzilla. Per fer-ho, posarem aquesta definició a la inicialització del programa:
#define setbit(var, bit) ((var) |= (1 << (bit)))
I dins del programa podem fer-la servir com es mostra a continuació:
setbit(Valor, 1); // Activa el bit 1
Per invertir tots els bits d'una variable podem emprar l'operador ~. Però si només volem invertir alguns bits podem fer servir la funció xor (o exclusiva) entre la variable i la màscara. Els bits que estiguin a 1 a la màscara seran invertits i els que estiguin a 0 es mantindran inalterats. El següent diagrama descriu el procediment.

W = W ^ 0b00001111
Podem definir una macro que ens permeti invertir un bit concret amb una funció senzilla. Per fer-ho, posarem aquesta definició a la inicialització del programa:
#define flipbit(var, bit) ((var) ^= (1<<(bit)))
I dins del programa podem fer-la servir com es mostra a continuació:
flipbit(Valor, 1); // Inverteix el bit 1
A l'Exemple RB podeu veure una possible implementació.
Per saber si un bit concret d'una variable està activat podem fer una and amb un vslor que només té a u el bit de la posició que ens interessa i a zero tots els altres. Si el resultat és zero vol dir que el bit estava desactivat i si és diferent de zero és que estava activat. No cal fer una comparació perquè en un if s'interpretarà com a cert qualsevol resultat més gran que zero.
Podem definir una macro que ens permeti consultar un bit concret amb una funció senzilla. Per fer-ho, posarem aquesta definició a la inicialització del programa:
#define testbit(var, bit) ((var) & (1 <<(bit)))
I dins del programa podem fer-la servir com es mostra a continuació:
if(testbit(Valor, 1)){ // Mira si està activat el bit 1

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.