Per quanto riguarda l'or č corretto...
Un and con 255 ( 1111 1111 ) lascia invariato il numero...
Casomai devi fare un and ~(1<<(nbib-1))
codice:#include <stdio.h> void printBit(unsigned char c) { int i; for(i = 7; i >= 0; --i) { printf("%d", (c>>i) & 1); } printf("\n"); } int main(void) { const int nbit1 = 3; const int nbit2 = 7; unsigned char c = 0; printBit(c); c |= (1u<<(nbit1-1)); c |= (1u<<(nbit2-1)); printBit(c); c &= ~(1u<<(nbit1-1)); printBit(c); return 0; }