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 :

Nombre binaire inclus dans un autre


Sujet :

C

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Points : 119
    Points
    119
    Par défaut Nombre binaire inclus dans un autre
    Bonsoir,

    Si on prend deux nombres binaires a et b, comment faire une fonction qui teste si b est inclus dans a ? avec une complexité O(1).

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 374
    Points : 23 632
    Points
    23 632
    Par défaut
    On relit son cours ? /o\

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Points : 119
    Points
    119
    Par défaut
    Pouvez-vous m'indiquer l'endroit où trouver mon bonheur ?

  4. #4
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par kimikou Voir le message
    Bonsoir,

    Si on prend deux nombres binaires a et b, comment faire une fonction qui teste si b est inclus dans a ? avec une complexité O(1).

    Merci d'avance.
    un nombre binaire je tiens à préciser c'est une représentation

    tu peux passer par une représentation sous forme de chaîne de caractères.

    Ensuite pour comparer deux binaires il suffit de faire un simple masque AND.

    Par exemple
    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
    16
    17
     
    char chaine1[]="0101";
    char chaine2[]="1101";
    char *ptr1=chaine1;
    char *ptr2=chaine2;
    int valeurBinaire1;
    int valeurBinaire2;
    while( *ptr1 !='\0')
    {
     valeurBinaire1=atoi(*ptr1);
     valeurBinaire2=atoi(*ptr2);
    if( valeurBinaire1 & valeurBinaire2)
    {// faire quelque chose
    }
     
    ptr1++;ptr2++;
    }
    c'est un exemple de code à titre de suggestion il n'est peut-être pas bon mais il donne une certaine logique...

    voir aussi la possibilité avec des champs de bits...

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Qu'est-ce que tu entends exactement par "inclus dans" ?

  6. #6
    Membre régulier

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 90
    Points : 119
    Points
    119
    Par défaut
    Par exemple, a=0101 est inclus dans b=0111. Car les deux 1 présents dans a sont présents dans b. Cela est possible en vérifiant si a & b == a.


    De même j'aimerai vérifier en temps constant si un nombre binaire ne possède qu'un seul 1. Y a t-il une méthode ? En utilisant des opérateurs binaires de préférence.

    Par exemple la fonction me renvoi vrai pour 0100 et faux pour 1010.

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Tout ce qu'il faut savoir sur le comptage de bits :
    http://en.wikipedia.org/wiki/Hamming_weight

  8. #8
    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
    De même j'aimerai vérifier en temps constant si un nombre binaire ne possède qu'un seul 1. Y a t-il une méthode ? En utilisant des opérateurs binaires de préférence.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned int n = ....;
    if(n!=0 && (n&(n-1))== 0).... 
         // la représentation binaire de n ne comporte qu'un 1
         // (n est puissance de deux)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

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

Discussions similaires

  1. Polygone inclus dans un autre
    Par Mic75 dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 19/11/2007, 13h55
  2. Polygone inclus dans un autre
    Par Mic75 dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 17/11/2007, 20h41
  3. Bind variable incluse dans une autre bind variable
    Par kinder_pingui dans le forum SQL
    Réponses: 3
    Dernier message: 28/11/2006, 10h35
  4. Comment trouver des structures incluses dans d'autres
    Par Vulcanos dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/10/2006, 23h59
  5. Probleme de composant inclus dans un autre.
    Par viro dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/04/2004, 15h44

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