IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Java Discussion :

[Réaction] Opérations binaires


Sujet :

Contribuez Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    361
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 361
    Points : 429
    Points
    429
    Par défaut [Réaction] Opérations binaires
    Bonjour, je viens de lire cet article sur les opérations binaires et j'ai une remarque concernant cette fonction "set":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public void set(int b, boolean value)
    {
      if (value)
        attributes |= (1 << b);
      else
        attributes &= (0 << b);
    }
    Via cette fonction on devrait donc pouvoir mettre à 0 le bit d'index b.
    Et les autres ? Ils sont mit à 0 également.
    En effet, un ET logique va être fait entre notre suite binaire et une suite de 0.

    Exemple : on veut mettre à 1 le bit d'index 7 et plus tard dans le code nous voulons mettre à 0 le bit d'index 3 SANS modifier les autres bits.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    attributes |= (1 << 7); // set(7, true);
    // ....
    attributes &= (0 << 3); // set(3, false);
     
    System.out.println(attributes); // affiche 0
    C'est donc impossible : on fait une remise à 0 de tous les bits.

    Pour éviter cela, il faut changer la ligne "attributes &= (0 << b);" par "attributes &= ~(1 << b);".
    Cela aura pour effet de nous donner une suite de 1 sauf pour le bit d'index donné où on aura un 0. Ainsi, en fesant notre ET logique on ne modifie pas les autres bits.


    Voila, j'en profite pour remercier Romain Guy pour tous ces tutos très utiles !

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Merci pour ce retour, c'est rectifié

Discussions similaires

  1. [PL SQL] opérations binaires
    Par Alain B. dans le forum Oracle
    Réponses: 2
    Dernier message: 26/10/2006, 13h54
  2. [c#] Opération binaire
    Par transistor49 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 10/05/2006, 12h19
  3. Opérations binaires ASP
    Par Trutinette dans le forum ASP
    Réponses: 5
    Dernier message: 21/03/2006, 12h46
  4. Opérations binaires, équivalent du >> et du <<
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 18/12/2005, 22h28
  5. opérations binaires (shift)
    Par jacquesberger dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2005, 22h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo