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

Algorithmes et structures de données Discussion :

est-ce que qq dit moi comment fait ça?


Sujet :

Algorithmes et structures de données

  1. #1
    S.H
    S.H est déconnecté
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 122
    Points : 31
    Points
    31
    Par défaut est-ce que qq dit moi comment fait ça?
    salut a tous
    je voudrais savoire comment cette algorithme marche
    l'exercise
    quel est la belle methode pour calculer les unites en nombre composer de 32bit.
    exemple
    10 contient deux unites parceque il ecrie comme ça 1010
    et non utuliser un boucle dans l'exersice
    ------------------
    la soulition
    x -= ((x >> 1) & 0x55555555);
    x = (((x >> 2) & 0x33333333) + (x & 0x33333333));
    x = (((x >> 4) + x) & 0x0f0f0f0f);
    x += (x >> 8);
    x += (x >> 16);
    return(x & 0x0000003f);

    est-ce que il y a qq me dit comment cette algorithme marche s'il vous plais donne moi un exemple

  2. #2
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Moi dire toi quand toi choisir language français et toi expliquer toi vouloir

  3. #3
    Membre actif Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Points : 203
    Points
    203
    Par défaut
    ça a pas l'air facile.
    Pour l'instant je peux juste te faire remarquer, si tu ne l'as pas découvert par toi meme:

    0x55555555 = en binaire: 01010101010101010101010101010101
    0x33333333 = en binaire: 00110011001100110011001100110011
    0x0f0f0f0f = en binaire: 00001111000011110000111100001111
    0x0000003f = en binaire: 111111

    quand tu fais par ex (x >> 2), ça veut dire que tu décale de 2 bits vers la droite.

    donc ton algo, c'est une suite de décalage et de mascage, qui par "miracle" (le miracle reste a comprendre) arrive a mettre le bon nombre de bits à '1' a la bonne place!
    ce que je note, c'est que le nombre max sera 32, donc 6 bits seulement seront necessaire.
    Le fait qu'il retourne: return(x & 0x0000003f);
    tends à montrer que les 6 bits de poids faible donnent le nombre recherché, mais qu'il reste quand même des bits "résiduels" dans le reste des 32 bits... si ça peut te donner une piste.

  4. #4
    Membre confirmé
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Points : 451
    Points
    451
    Par défaut
    Citation Envoyé par Nemerle
    Moi dire toi quand toi choisir language français et toi expliquer toi vouloir
    C'est vrai que c'est vraiment une tendance pour les nouveaux sur le forum !! Faites des phrases en français et si possible sans fautes, ça accroche l'oeil !!

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    A première vue, S.H. n'est pas francophone.

  6. #6
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    887
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 887
    Points : 1 531
    Points
    1 531
    Par défaut
    Citation Envoyé par S.H
    je voudrais savoir comment cet algorithme marche
    A la première ligne, on comptabilise les bits sur chaque groupe de deux bits.

    A la seconde, sur chaque groupe de quatre

    A la troisième, huit

    A la quatrième, seize

    A la cinquième, trente-deux, le compte y est.

    Comme à chaque étape le nombre de bits est inférieur au maximum qu'on peut coder sur ces bits, il n'y a pas de retenues d'un groupe sur l'autre.
    Seule astuce, à la première, on fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x -= ((x >> 1) & 0x55555555);
    au lieu de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = ((x >> 1) & 0x55555555) + (x & 0x55555555));
    Mais ça semble equivalent.

  7. #7
    S.H
    S.H est déconnecté
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 122
    Points : 31
    Points
    31
    Par défaut
    merci beaucoup de votre aide
    je sais j'ai beaucoup des faults mais l'essentiel vous comprenez
    d'acord
    en binaire 0000003f=111111 mais pourquoi il y a 0x avant le nombre hex 0000003f
    et est-ce que il ya des cours pour comprendre ça

  8. #8
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par S.H
    mais pourquoi il y a 0x avant le nombre hex 0000003f
    C'est une des notations conventionnelles des nombres héxadécimaux. C'est comme ça en C, notamment.

    D'autres langages préfèrent mettre un H à la fin du nombre héxadécimal.

    Le tout, c'est de mettre une marque qui permette de savoir que ce n'est pas de la base 10.

  9. #9
    S.H
    S.H est déconnecté
    Nouveau membre du Club
    Inscrit en
    Octobre 2005
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 122
    Points : 31
    Points
    31
    Par défaut
    merci beaucoup de votre aide

Discussions similaires

  1. Réponses: 12
    Dernier message: 11/02/2009, 14h15
  2. Réponses: 2
    Dernier message: 21/02/2006, 17h53
  3. Qu'est-ce que c'est que Nessus, ça fait quoi exactement ?
    Par PeterT dans le forum Développement
    Réponses: 3
    Dernier message: 24/07/2002, 11h23

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