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 :

calcul le nombre 0 dans la representation binaire de n


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Par défaut calcul le nombre 0 dans la representation binaire de n
    salut
    j'ai un exercice que je ne comprends meme pas
    j'ai cherché sur google j'ai trouvé des solutions mais j'ai rien saisie
    le probleme est le suivant
    ecrire un algorithme permet de calculer le nombre de 0 dans la representation binaire de n
    merci

  2. #2
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Par défaut
    je penses que j´ai compris l´algo
    j´ai un nombre en binaire et j´affiche le nombre de zero qu´il y´a dans ce nombre
    mais comment faire la

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Ah,

    Tu comptes les 1 dans la valeur = nUn, le nombre de 0 est longueur_en_bits_de_la_valeur - nUn !!

    Plus sérieux : il suffit de tester un à un les bits de ta valeur

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Si un nombre est pair, il se termine par un 0 en base 2.

    Donc pour ton algo, tu divises successivement ton nombre par 2. A chaque fois que ca tombe juste -> un 0 de plus en base 2.

    exemple: le nombre 12

    12 / 2 = 6 --> 1er zero
    6 / 2 = 3 --> 2eme zero
    3 / 2 = 1 + 0.5
    1 / 2 = 0 +0.5
    0

    Donc 2 zéros, ce qu'on peut verifier:

    12 (base10) = 1100 (base2)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Par défaut
    le nombre entré est deja en binaire

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Citation Envoyé par kojima
    le nombre entré est deja en binaire
    !!
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Hol,

    Soyons fous. Si la valeur a 32 bits de long, tu peux connaître le nombre de bits à 1 avec

    donc, si pour ton compilateur int est codé sur 32 bits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    typedef unsigned uint_32;
     
    uint_32 countOneBits(uint_32 v)
    // compte le nombre de bits à 1
    {
        uint_32 w = v - ((v >> 1) & 0x55555555);                    // temp
        uint_32 x = (w & 0x33333333) + ((w >> 2) & 0x33333333);     // temp
        uint_32 c = ((x + (x >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
        return c;
    }
    Il faut passer en unsigned à cause des décalages.

    C'est facilement adaptable à d'autres tailles pour la valeur

Discussions similaires

  1. Calcul nombre de feuille dans un arbre binaire
    Par Etoile_ dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 08/02/2012, 23h07
  2. Calcul de la distance dans une image binaire
    Par tawada dans le forum Images
    Réponses: 1
    Dernier message: 06/07/2010, 10h27
  3. calcul des nombres saisies dans des champs text
    Par saramery dans le forum Langage
    Réponses: 7
    Dernier message: 26/01/2010, 13h27
  4. [Dates] Calculer le nombre de jours dans le mois suivant...
    Par Life Hunter dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2006, 00h01
  5. Comparaison de base et calculs du nombre d'éléments dans Bas
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2004, 08h00

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