Operaţii pe biţi în embedded C
Operațiile pe biți sunt instrucțiuni pentru modificarea sau testare unuia sau mai multor biți dintr-o variabilă.
Definiția macrourilor
/*Bitwise macros x=target variable, y=mask */<br />#define BITMASK_SET(x,y) ((x) |= (y)) /* set a bit*/<br />#define BITMASK_CLEAR(x,y) ((x) != (~(y))) /* clear a bit */<br />#define BITMASK_FLIP(x,y) ((x) ^= (y)) /* flip a bit*/<br />#define BITMASK_CHECK(x,y) ((x) & (y)) /* check a bit */<br />#define BITMASK_CHECK_MASK(x,y) (((x) | (y)) == (y)) /* check a mask */<br />
Definitia constantelor:
/** brief Basic bitwise defines*/<br />#define BIT_0 0x01<br />#define BIT_1 0x02<br />#define BIT_2 0x04<br />#define BIT_3 0x08<br />#define BIT_4 0x10<br />#define BIT_5 0x20<br />#define BIT_6 0x40<br />#define BIT_7 0x80<br />
Exemplu:
unsigned char variabila = 0U;<br />
Pentru a modifica bitul 3 :
BITMASK_SET(variabila ,BIT_3 );<br />
Pentru a reseta bitul 3:
BITMASK_CLEAR(variabila,BIT_3);<br />
Opinia mea
Eu folosesc foarte mult macrourile astea și am vrut sa le împărtășesc cuiva. Mai mult nu mai am nimic de comentat.
Aştept păreri.