MTProd > Dev4all > Articles > Langages > C & C++ > Opération Binaire en C > 3 Les opérateurs bitwise
Rechercher17 Personnes en-ligne
Opération Binaire en C

3  Les opérateurs bitwise

Au niveau machine, les données et les fichiers sont constitués de bits, variant d'un type à l'autre. Leur taille est mesurable, comme nous l'avons au chapitre 1 à l'aide de l'opérateur sizeof.
En C, il existe 6 opérateurs de gestion binaires (opérateurs bitwise) :

  • & : Opérateur bitwise AND

  • | : Opérateur bitwise OR

  • ^ : Opérateur bitwise XOR (OU exclusif)

  • ~ : Opérateur bitwise de complément

  • >> : Opérateur de redirection vers la droite

  • << : Opérateur de redirection vers la gauche


Voyons leur utilité et comment les utiliser :



3.1  Opérateur bitwise AND (&)

Il s'utilise le plus souvent de la manière suivante :

x & y

x et y sont des opérandes.
L'opérateur & compare un à un les bits de x et y. Si deux bits sont égaux à 1, 1 est placé à la même position dans le résultat. Si l'un et/ou l'autre des bits contient 0, 0 est alors placé dans le résultat.
Par exemple : l'expression 12 & 10 renvoie 8.
En bits : 12 vaut 1100, 10 vaut 1010, ce qui nous donne :
1100 & 1010 = 1000. 1000 vaut bien 8 en décimal.




3.2  Opérateur bitwise OR (|)

Il s'utilise le plus souvent de la manière suivante :

x | y

x et y sont des opérandes.
L'opérateur | place 1 dans le résultat si l'un des opérandes vaut 1.
Par exemple : l'expression 12 | 10 renvoie 14.
En bits : 12 vaut 1100, 10 vaut 1010, ce qui nous donne :
1100 | 1010 = 1110. 1110 vaut bien 14 en décimal.




3.3  Opérateur bitwise XOR (^)

Il s'utilise le plus souvent de la manière suivante :

x ^ y

x et y sont des opérandes.
L'opérateur ^ place 1 dans le résultat si un seul opérande est égal à 1.
Par exemple : l'expression 12 ^ 10 renvoie 6.
En bits : 12 vaut 1100, 10 vaut 1010, ce qui nous donne :
1100 ^ 1010 = 0110. 0110 vaut bien 6 en décimal.




3.4  Opérateur bitwise de complément (~)

Il s'utilise le plus souvent de la manière suivante :

~x

x est un opérande.
L'opérateur ~ inverse l'ordre des bits de l'opérande traité.
Par exemple : l'expression ~12 renvoie 243, pourquoi ?
En bits : 12 vaut 00001100 (notation sur un entier non-signé de 8 bits (unsigned char).
~00001100 renvoie 11110011. Les bits ont bien été inversé, cette valeur vaudra alors 243, soit 255 (valeur maximale d'un entier de type unsigned char) - 12.




3.5  Opérateur de redirection vers la droite (>>)

Il s'utilise le plus souvent de la manière suivante :

x >> y

Ici, x est l'opérande source et y le nombre de bits à déplacer.
Ainsi, l'expression 8 >> 2 ordonne au processeur de décaler vers la droite 2 bits de l'opérande 8, ce qui renverra le chiffre 2. Voyons cette expression de plus prêt :
8 vaut 00001000 sur 8 bits, ici nous devons déplacer 2 bits vers la droite, cela nous donnera comme résultat 00000010, soit 2 en décimal.




3.6  Opérateur de redirection vers la gauche (<<)

Il s'utilise le plus souvent de la manière suivante :

x << y

Ici, x est l'opérande source et y le nombre de bits à déplacer.
Ainsi, l'expression 8 << 2 ordonne au processeur de décaler vers la gauche 2 bits de l'opérande 8, ce qui renverra le chiffre 32. Voyons cette expression de plus prêt :
8 vaut 00001000 sur 16 bits, ici nous devons déplacer 2 bits vers la gauche, cela nous donnera comme résultat 00100000, soit 32 en décimal.





<<  2  Les opérateurs logiquesSommaire4  Un peu de pratique  >>

 Accés rapide

1  L'opérateur sizeof
2  Les opérateurs logiques
3  Les opérateurs bitwise

Opérateur bitwise AND (&)

Opérateur bitwise OR (|)

Opérateur bitwise XOR (^)

Opérateur bitwise de complément (~)

Opérateur de redirection vers la droite (>>)

Opérateur de redirection vers la gauche (<<)

4  Un peu de pratique
5  Conclusion
Voir le sommaire complet

 Liens utiles

  • Publier un article
  • Envoyer cette page
  • Ecrire à l'auteur

  •  Mini-Chat

    Thienou (00h11): salut
    Thienou (00h13): Oula mon inscription date de 11 ans je me sent vieux :)
    neowolf25 (17h59): MMF2 en "pay what you want" jusqu'à demain sur
    neowolf25 (17h59): https://www.hu
    mblebundle.com/
    weekly

    Miuka (21h15): Coin coin de 2014
    Miuka (21h15): Des gens qui ont migré sur le forum Clickteam ou ailleurs ?
    Strike (09h45): Salut les vieux !
    Hikarion (12h46): Salut les djeunz
    Hikarion (13h38): A qui profite le scandale ?
    Hikarion (13h44): le chat irc est toujours actif ?

    Votre message



     Archives

     Dev4all Newsletter

    Restez à jour avec la newsletter mensuelle !

    Votre e-mail


    1800 abonnés

     Recommander Dev4all

    Recommandez Dev4all à un ami. Cela fera grandir notre communauté !

    E-mails de vos amis




    [ Accueil | S'inscrire | Mon Dev4all | Communauté | Téléchargements | Articles | Forums | Chat ]

    [ A propos de Dev4all | Aide | La charte Dev4all | Contact ]

    © 2000-2018 MTProd. Tous droits réservés.
    L'utilisation de Dev4all implique l'acceptation et le respect de la charte Dev4all.