Pour manipuler directement l'écriture binaire d'un entier, on utilise les opérateurs suivants :
&
effectue un et sur chacun des bits de ses deux
opérandes ; par exemple, 6&3
= 143#143 &
144#144 =145#145 =
2
;
|
effectue un ou sur
chacun des bits de ses deux opérandes ; par exemple, 6|3
=
143#143 |
144#144 = 146#146 = 7
;
^
effectue un
ou exclusif sur chacun des bits de ses deux opérandes ; par exemple,
6^3
= 143#143 ^
144#144 = 147#147 = 5
;
>>n
effectue un décalage à droite de n
crans de tous les bits (ceux le plus à droite tombent, le bit le plus
à gauche est reproduit sur les 59#59 bits de gauche) ; 107#107>>
148#148 ; par exemple,
14>>2
= 149#149 >>2
= 150#150 = 24#24, tandis que
-15>>2
= 151#151 >>2
= 152#152 = 153#153 ;
>>>n
effectue un décalage à droite non signé de
n crans de tous les bits (ceux le plus à droite tombent, des
zéros rentrent par la gauche) ; si 154#154, 107#107>>>
155#155 ; par exemple,
-15>>>2
= 151#151 >>>2
= 156#156 =
157#157 (calcul sur 32 bits);
<<n
effectue un décalage à gauche de n
crans de tous les bits (ceux le plus à gauche tombent, des zéros
rentrent par la droite) ; par exemple, 3<<2
= 150#150 <<2
=
158#158 = 12
;
~
effectue un
complément de tous les bits (les zéros deviennent des 1 et
réciproquement) ; par exemple, ~5
= ~
159#159 =
160#160 = -6
; de façon générale, -
161#161~
162#162.
Ces opérations sont fréquemment utilisées pour travailler sur les bits de la façon suivante :
i |= (1<<n)
;
i &= ~(1<<n)
;
i ^= (1<<n)
;
if (i&(1<<n)!=0) ...
.
et aussi dans les cas suivants où elles sont plus rapides que les opérations arithmétiques correspondantes :
>>
165#165, si 154#154 ;
<<
166#166.