J’écrirais deux lignes pour définir, par exemple, des bits à quelque chose. Ici, par exemple, je souhaite définir les 8 bits supérieurs de la valeur uint16_t x sur les 8 bits inférieurs de y.
uint16_t y = 0x0034; uint16_t x = 0xFF12;
Je veux avoir x:
assert(x == 0x3412);
J’ai tendance à écrire ces deux lignes:
x &= 0x00FF; x |= (y << 8);
Existe-t-il un moyen d’écrire une seule ligne pour obtenir le même effet sans utiliser la macro?
Développez simplement les deux lignes:
x &= 0x00FF; // x = x & 0xFF x |= (y<<8); // x = x | (y<<8) // and combine x = (x & 0xFF) | (y << 8);