 
 
 
 
 
 
 
 
 
 
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 = 01102 & 00112 =00102 =
  2 ;
|  effectue un ou sur
  chacun des bits de ses deux opérandes ; par exemple,  6|3  =
  01102 |  00112 = 01112 = 7 ;
^  effectue un
  ou exclusif sur chacun des bits de ses deux opérandes ; par exemple, 
  6^3  = 01102 ^ 00112 = 01012 =  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 n bits de gauche) ; i>>
 ; par exemple,
; par exemple,
  14>>2 = 11102 >>2 = 112 = 3, tandis que
  -15>>2 = 
1..100012 >>2 = 1..1002 = -4 ;
>>>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  ,
i
,
i>>
n = i<tex2htmlverbmark>93<tex2htmlverbmark>n ; par exemple,
  -15>>>2 = 
1..100012 >>>2 = 
001..1002 =
  
1073741820 (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 = 112 <<2 =
  11002 = 12 ;
~  effectue un
  complément de tous les bits (les zéros deviennent des 1 et
  réciproquement) ; par exemple,  ~5  = ~0..01012 =
  
1...10102 = -6 ; de façon générale, -n = (~n) +1.
Ces opérations sont 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 fréquents suivants où elles accélèrent le programme :
 ;
;
>>n =
  i/2n, si  ;
;
<<n = i2n.
 
 
 
 
 
 
 
 
