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 :

inverser un binaire


Sujet :

C

  1. #21
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 12
    Points
    12
    Par défaut
    oui voila

  2. #22
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Je viens de capter un truc ...
    Pas besoins de manipulation bit a bit !

    En realite, ton int vaut bin = 10010010010;

    Le seul truc qui me derange c'est qu'un int est limité a 10 chiffre (-2 147 483 648 à 2 147 483 647).


    Mais bon :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    void InversionBit(int* bin)
    {
        /* Je copie le nombre binaire dans une chaine de caractere pour plus de facilité */
        char copie[10];
        copie[10] = sprintf (copie,"%d",(*bin));
        int longueur = strlen(copie);
     
        /* J'inverse l'ordre grace a une classique permutation circulaire */
        int i;
        for (i=0 ; i<longueur/2 ; i++)
        {
            char temp = copie[i];
            copie[i] = copie[longueur - 1 - i];
            copie[longueur - 1 - i] = temp;
        }
     
        /* Pour resoudre le probleme de precision, j'utilise un double temporaire */
        double binTemp;
        for (i=0 ; i<longueur ; i++)
            if (copie[i] == '1')
                binTemp += pow(10.0,longueur-i-1);
     
        /* Finally ^^ */
        (*bin) = (int)(binTemp);
     
    }
    Ce code a été codé pour donner une base !
    Il est certainement améliorable.

    Voila, si tu as des questions, ppose les precisement stp

  3. #23
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Bon, dans ce cas, la première fonction que je t'ai donnée dans le deuxième message va très exactement faire ce que tu veux : un palindrome bit à bit d'un entier.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #24
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Mais un palindrome, c'est un axe de symetrie, non ? Comme pour le mot RADAR.
    Je n'arrive pas a comprendre tout le fonctionnement de ton code.

    Si je te donne un int qui a pour bit :

    1010.

    J'obtient quoi ? 0101 ou 10100101 ?

  5. #25
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Vu que c'est sur 32 bits, ton nombre est donc "0000 0000 0000 0000 0000 0000 0000 1010". Ma fonction renverra donc "0101 0000 0000 0000 0000 0000 0000 0000".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #26
    Membre actif Avatar de monwarez
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 144
    Points : 293
    Points
    293
    Par défaut
    Ce qu'il veut faire n' est pas de la manipulation bits à bits, c' est plutôt de la manipulation 4 bits à 4 bits.
    Il peut décomposer son int en 4 char et ensuite inverser( d' abord dans le char) l' ordre des 4 char .
    Du moins c' est se que j' ai compris.

  7. #27
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par monwarez Voir le message
    Ce qu'il veut faire n' est pas de la manipulation bits à bits, c' est plutôt de la manipulation 4 bits à 4 bits.
    Il peut décomposer son int en 4 char et ensuite inverser( d' abord dans le char) l' ordre des 4 char .
    Du moins c' est se que j' ai compris.
    Tu as raison, c'est moi qui est pensé a de la manipulation bit a bit. Cependant, on a deja clairement dis qu'il ne voulais pas inverser 4 à 4. Si tu regarde bien (l'exemple coloré un peu plus avant dans les post). Il veut lire de droite a gauche au lieu de gauche a droite.

    De plus, il a deux code qui lui font ce qu'il veut.

Discussions similaires

  1. Conversion caractère en binaire (et inversement)
    Par Zubrowsky dans le forum VBScript
    Réponses: 1
    Dernier message: 26/05/2008, 17h55
  2. inverser bits d'un nombre binaire
    Par jojo_ol76 dans le forum MATLAB
    Réponses: 7
    Dernier message: 09/11/2007, 10h05
  3. Lecture fichier binaire et inversion d'octets
    Par zoro_le_renard dans le forum Fortran
    Réponses: 8
    Dernier message: 17/07/2007, 20h35
  4. Ecrire dans un fichier binaire en inversant les poids des bits
    Par zejo63 dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 09/07/2007, 15h11
  5. [VBA-E]Inversion d'un nombre binaire
    Par Chemou dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/05/2006, 08h36

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