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

Langage C++ Discussion :

Opérateur binaire et endianess


Sujet :

Langage C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut Opérateur binaire et endianess
    Bonjour,

    J'aurais aimé savoir si les opérateurs binaires tels que ^ & ou encore >> sont indépendant de l'endianess, à savoir par exemple que le code suivant fonctionne que l'on soit en big ou little endian (je n'ai pas de big endian sous la mainb pour essayer) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int a = 8 << 2;    // a = 32

    Merci beaucoup!

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Ces opérateurs sont aussi indépendants que possible de l'endianness...

    Ce que je veux dire par là, c'est que le code donnera bel et bien toujours 32, quel que soit le boutisme utilisé.

    Cependant, il faut être bien conscient que, si tu sauvegardes cette valeur binaire dans un boutisme donné et que tu essaye de la récupérer dans l'autre, tu as de grands risques de... ne pas récupérer la valeur d'origine parce que la valeur n'est pas représentée de la même manière.

    L'idée générale est donc, si tu dois assurer l'interopérabilité entre des systèmes utilisant des boutismes différents, de préciser explicitement le boutisme utilisé lors de la sérialisation dans les specs, de manière à pouvoir invoquer les fonctions de conversions (htons et consors) en cas de besoin
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    En fait j'utilise juste ces opérateurs dans des calculs pour multiplier ou diviser par des puissance de deux avec les décalages de bits. Mais comme je stocke rien du tout de persistant je pense donc que sa ne posera pas de problème

    Juste pour les opérateur & peut être car le terme à gauche est une constante et le résultat en dépendra non?

    En tout cas merci beaucoup!

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Citation Envoyé par victor_gasgas Voir le message
    En fait j'utilise juste ces opérateurs dans des calculs pour multiplier ou diviser par des puissance de deux avec les décalages de bits. Mais comme je stocke rien du tout de persistant je pense donc que sa ne posera pas de problème

    Juste pour les opérateur & peut être car le terme à gauche est une constante et le résultat en dépendra non?
    Non, pas tant que tu n'essayera pas de comparer sur un système petit boutiste une valeur calculée sur un système grand boutiste (ou inversement).

    L'opérateur & (et tous les autres du même tonneau) travaillent au niveau des bits des valeurs se trouvant à gauche et à droite.

    Tant que les deux valeurs sont générées (par définition de constante ou par calcul) et comparée sur le même système (en terme de boutisme), tu n'aura jamais le moindre problème : 32 vaudra toujours 32 quel que soit le boutisme envisagé, même si la représentation de cette valeur peut varier en fonction du système
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    screetch
    Invité(e)
    Par défaut
    multiplier avec des << pourquoi?

  6. #6
    Membre émérite
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 552
    Par défaut
    Citation Envoyé par screetch Voir le message
    multiplier avec des << pourquoi?
    Pour avoir un code plus lisible que si on espère sagement que le compilateur se charge de ces magouilles?

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Plus lisible? Si l'intention est de faire une multiplication, il me semble que le plus lisible ... c'est de faire une multiplication.
    A une époque c'était plus rapide de faire du décalage pour coder les multiplications/divisions par puissances de deux, mais est-ce encore vrai? Et si c'est encore vrai, n'est-ce pas pris en charge automatiquement?

  8. #8
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    a fait au moins 1500 ans que tout les compilo font de la strength reduction dans ces cas la. Donc * oui, << non :o

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    Bonjour, je n'avais pas vu les réponses. En fait l'opérateur << c'est pour éviter une boucle ici (dans le Yes Engine de Laurent Gomilla sur developpez.com), à la ligne 12:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        unsigned int nearestPowerOfTwo(unsigned int value)
        {
            unsigned int temp = value;
            unsigned int powerOfTwo = 0;
     
            while (temp > 1)
            {
                temp >>= 1;
                ++powerOfTwo;
            }
     
            unsigned int retval = 1 << powerOfTwo;
     
            return retval == value ? retval : retval << 1;
        }
    Donc ici je trouve que c'est commode mais bon si jamais il y à plus lisible je suis toujours preneur!

    Merci beaucoup!

  10. #10
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 199
    Par défaut
    Oula, un bon lien en perspective! Merci!

Discussions similaires

  1. Question opérateurs binaires
    Par Evocatii dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 15/01/2009, 19h44
  2. [JSTL] Opérateurs binaires dans les JSP
    Par gwinyam dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/07/2008, 15h59
  3. Opérateur binaire en Delphi et en php
    Par Morvan Mikael dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2008, 09h29
  4. Réponses: 8
    Dernier message: 03/11/2007, 18h01
  5. Opérateurs binaires
    Par Zenol dans le forum C++
    Réponses: 6
    Dernier message: 05/03/2006, 02h43

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