( uid_6201 | 2020. 11. 08., v – 00:27 )

Pedig csak 1-szer kell megértened 10 perc alatt.

| --> bit szintű VAGY (bármelyik 1-es, a kimenet 1) ne keverd a  logikai  if ( true || false ) féle 1 bites vagy-gyal.
& --> bit szintű ÉS (ha mindegyik 1-es, akkor lesz a kimenet 1) .. ezt se keverd a logikai if ( true && false ) féle 1 bites és-sel.
^ --> bit szintű kizáró vagy (XOR). Kizárólag akkor 1, ha csak egyik 1-es, a másik 0-ás. A VAGY ugyebár 11 esetén is 1 volt.
~ --> bit szintű negálás Ezt se keverd a ! jellel. Utóbbi is csak 1 bites. Lásd még: false = 0; true = !false;
(x<<N) --> N lépéssel balra shiftel. Zárójelezd a kódokban, mert például az utána következő operátor precedenciája csúnyán bekavarhat. A C fordító warningot dob (-Wall esetén).
(x>>N) --> N lépéssel jobbra shiftel. Zárójelezd a kódokban.

Hasznos példa:
   4. bit és 0. bit set-elésére:  ertek |= (1<<4) | (1<<0); // utóbbit is kiírom a kódban a rend kedvéért, a fordító úgyis kiejti a <<0-t.
   4. bit és 0. bit resetelésére: ertek &= ~((1<<4) | (1<<0)); // amely biteket akarod resetelni, annak az egésznek az inverzével (~) ÉS-elünk.

   4. bit és 0. bit invertálására:   ertek ^=    (1<<4) | (1<<0); // XOR
   4. bit és 0. bit kivételével inv: ertek ^= ~((1<<4) | (1<<0)); // inverzével XOR

Még annyit érdemes megjegyezned, hogy melyik 4 bites érték (0b0000 ... 0b1111) mennyit ér és 16-os számrendszerben ez az érték mivel jelölendő (0..9 oké, majd A..F).
Ugyanis ahogy fentebb is láthattad, a bitek halmozása helyett áttérünk inkább 4 bitenként egyetlen digitre (0..F) a tömörebb leírhatóság miatt. De mögötte a logikai műveletek fejben való sakkozásánál mindig a bitképre gondolj.

Tedd el ezeket a sorokat és remélem nem lesz gondod a továbbiakban ezzel sem.