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

C Discussion :

Decalage de bits


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 28
    Points
    28
    Par défaut Decalage de bits
    Bonjour,

    J'ai une fonction sous mes yeux qui fait ceci et j'aimerais savoir son utilite svp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int return_nb(int value)
    {
    int power = 1;
    while (power < value)
    {
    power <<= value;
    }
    return power;
    }

    Je sais que ca a un rapport avec les decalages de bits mais je ne maitrise pas bien ce concept. Quelqu'un sait a quoi sert cette fonction du coup svp ? Merci d'avance.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    Cette fonction est quelque peut étrange...

    Pour value >= 1, elle retournera 2^value sinon elle retourne 1.
    Cas spécial si value >= sizeof(int)-1, elle retournera 0.

    Sinon ce tutoriel pourrait t'être utile.

  3. #3
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Bonjour,

    Je présume que la fonction n'est pas vraiment conçue pour travailler sur les nombres négatifs (auquel cas on pourrait opérer sur des entiers non signés pour améliorer la documentation). Dans sa forme la plus simple, cette fonction est équivalent à :

    D'ailleurs, on pourrait la faire passer en temps constant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    unsigned int
    f (const unsigned int x)
    {
      return 1u << x;
    }
    Bonne journée !
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Sauf pour value==1, elle retourne 1 et pas 2
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juillet 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 26
    Points : 28
    Points
    28
    Par défaut
    Mea culpa, je me suis completement plante pour la fonction, au niveau du retour, de l'assignation et aussi de la condition d'arret. Je me disais aussi ...

    Voici donc la fonction, la bonne cette fois-ci. Promis lol

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    size_t          return_nb(int nb)
    {
      int           power;
     
      power = 1;
      while (power < nb)
        {
          power <<= 1;
        }
      return (power);
    }

  6. #6
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    Cette fois-ci, il s'agit de retourner la plus petite puissance de deux qui est supérieure ou égale à nb.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion PDU, decalage de bit
    Par NeoKript dans le forum C
    Réponses: 2
    Dernier message: 23/11/2009, 12h47
  2. decalage des bits <<
    Par CLion dans le forum C
    Réponses: 3
    Dernier message: 19/03/2009, 13h40
  3. decalage de bit << >>
    Par kacedda dans le forum Visual C++
    Réponses: 2
    Dernier message: 28/02/2007, 10h16
  4. decalage de bits
    Par romeo9423 dans le forum C
    Réponses: 3
    Dernier message: 27/01/2006, 17h37
  5. Decalage de bits ... curiosité !
    Par Franck.H dans le forum C
    Réponses: 8
    Dernier message: 27/06/2005, 12h15

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