Loogisia operaattoreita &&,|| ja! ei pidä sotkea vastaaviin bittitason operaattoreihin:
& bittitason AND | bittitason OR ^ bittitason XOR ~ bittitason NOT << rullaus vasemmalle, 0 sisään oikealta >> rullaus oikealle, 0 sisään vasemmalta (unsigned int ja int >=0) , voi tulla 0 tai 1 sisään vasemmalta (int joka <0) (laiteriippuva, esim. Turbo C:ssä tulee 1).Bittitason operaattoreita voidaan käyttää vain kokonaisluvuiksi muuttuviin operandeihin.
Operaattoreiden toimintaa voidaan kuvata seuraavasti. Olkoon meillä sijoitukset a=5; b=14;. Kuvitellaan kokonaisluvut tilapäisesti 8 bitin mittaisiksi (oikeasti yleensä 16 tai 32 bittiä):
|
Binaarisena
|
desim.
|
|
a
|
0000 0101
|
5
|
|
b
|
0000 1110
|
14
|
|
a
& b
|
0000 0100
|
4
|
|
a
| b
|
0000 1111
|
15
|
|
a
^ b
|
0000 1011
|
11
|
|
~a
|
1111 1010
|
-6
|
|
a<<2
|
0001 0100
|
20
|
|
b>>3
|
0000 0001
|
1
|
|
a
&& b
|
0000 0001
|
1
|
|
a
|| b
|
0000 0001
|
1
|
|
!a
|
0000 0000
|
0
|
{ /* binoper.c */ int a=5; b=2; if ( a&&b ) printf("On ne!\n"); if ( a&b ) printf("Ei ne ookkaan!\n"); if ( a ) printf("a on!\n"); if ( ~b ) printf("b ehkä on!\n"); if ( !b ) printf("b ei ole!\n"); }