#define BIT(x) (1 << (x)) #define SETBITS(x,y) ((x) |= (y)) #define CLEARBITS(x,y) ((x) &= (~(y))) #define SETBIT(x,y) SETBITS((x), (BIT((y)))) #define CLEARBIT(x,y) CLEARBITS((x), (BIT((y)))) #define BITSET(x,y) ((x) & (BIT(y))) #define BITCLEAR(x,y) !BITSET((x), (y)) #define BITSSET(x,y) (((x) & (y)) == (y)) #define BITSCLEAR(x,y) (((x) & (y)) == 0) #define BITVAL(x,y) (((x)>>(y)) & 1)Osobně mi nepřirostly k srdci a nějak jsem si je prostě nezvykl používat. Několikrát jsem jim dával šanci, ale dopadlo to tak, že někde jsem použil makro, někde zapomněl a maskoval. To druhé zejména při vícenásobném nahazování nebo shazování bitů, kde je jednořádková maska určitě přehlednější a úspornější. Teď už beru pokaždé kousek papíru, načmárám si těch pár jedniček a nul a.. ..a je to :D
neděle 27. června 2010
C/C++: Makra pro bitové operace
Přihlásit se k odběru:
Komentáře k příspěvku (Atom)
Žádné komentáře:
Okomentovat