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. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut inverser un binaire
    Bonjour,
    j'ai un petit problème je ne voix pas tout comment faire pour inverser un nombre binaire.
    voila lors de mon affichage sur ma console j'ai ceci 00000000 00001111 00000000 00000000,
    mais je veux avoir ceci 00000000 00000000 11110000 00000000.
    et après je veux juste avoir 1111 , je veux faire un décalage voir la droite et un masque en même temps.
    est ce que vous pouvez m'aider.
    bonne journée

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Palindrome binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    unsigned int palindrome ( unsigned int number ) {
      unsigned int result = 0 ;
      int i ;
     
      for (i=0;i<32;i++) {
        result &= (number & 1) ;
        result <<= 1 ;
        number >>= 1 ;
      }
      return result ;
    }
    Pour la seconde partie de ta question, je ne vois pas : tu veux n'afficher QUE les bits à 1, en virant les zéros à gauche et à droite, ou extraire très exactement les 4 bits à la position 12 dans ton nombre ?
    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

  3. #3
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    lors de mon affichage j'ai ceci;
    00000000 00001011 00000000 00000000
    après je veux avoir 00000000 00000000 11010000 00000000
    et à la fin j'aimerais avoir 1101, donc je me suis dit qu'il faudra utiliser un décalage + un masquage mais je ne sais pas comment l'utiser.

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Sauf que ce n'est toujours pas clair... Tu veux inverser quoi ? Une chaîne de caractères ? Un entier bit à bit (et dans ce cas tu as déjà la fonction ci-dessus) ?
    Tu veux afficher QUELS bits de ton chiffre ? Ou est-ce d'après la chaîne résultat que tu veux extraire certains caractères ?
    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

  5. #5
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    en ce moment j'utilise une fox, quand je touche une touche du clavier numérique de la fox sa machine ceci : 00000000 00001011 00000000 00000000
    et moi je veux l'inverser car il n'est pas dans le bon sens donc je veux ceci:
    00000000 00000000 00001101 00000000
    Et nous se qui nous intéresse c'est juste 1101 car par la suite je doit afficher sur mon terminal soit touche correspondante au clavier numérique

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Ça te renvoie quoi, ton truc ? Une chaîne de caractères ? Un chiffre binaire ? Tu récupères ça dans quelle variable, et de quel type ?

    On n'est pas derrière toi à avoir le problème sous les yeux, la divination, ça ne marche pas sur les forums. Expliques ton problème CLAIREMENT. Je ne sais pas ce qu'est une "fox" (et, pour être honnête, je m'en fiche aussi), donc je ne sais pas ce qu'elle fait, renvoie, ni comment elle s'utilise.
    Là, on est sur un forum C, donc c'est à toi de nous dire quelles sont les interfaces C que tu as avec ce truc.
    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

  7. #7
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    elle m'affiche un chiffre binaire

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

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    ....


    Quel rapport avec le C, alors ?
    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

  9. #9
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    En supposant que je passe "0001 0010 0011 0100 0101 0110 0111 1000" (0x12345678) en paramètre, cherches-tu à obtenir
    Tu cherches à avoir "10000111 01100101 01000011 00100001" (0x87654321) à la place, ou bien "01111000 01010110 00110100 00010010" (0x78563412) ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    celui la :
    "10000111 01100101 01000011 00100001" (0x87654321)

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Donc tu veux permuter quatre bit par quatre bit ????
    Ce n'est pas du tout ce que tu demander au debut.
    Va falloir songer a etre un tantinet plus precis car tes reponse vague et incomplete me mette en rogne !

    Deja, est tu sur de faire du C ?
    Si oui, tu recupere quoi ? un int, un char[], je veux le type !!
    Comment recupere tu ton "nombre binaire" ? Par une fonction ?
    donne nous le prototype stp.

  12. #12
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    oups excuse moi je me suis tromper.

    je vais t'expliquer par exemple je prend un code binaire n'importe le quel:
    msb 00000000 10011000 11111111 11011011 lsb

    bas pour moi je veux afficher le lsb 11011011 11111111 00011001 00000000 msb

    voila, et je voulais savoir si c'était possible

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    oui, en C c'est possible, mais ca depend du type de variable dans lequel tu as ce nombre binaire stocker !
    Apparement, tu veux juste inverser l'ordre des bits, c'est a dire que le premier devient le dernier, le deuxieme avant dernier ....

    J'en viens a douter que tu est de quoi modifier ton code pour faire ce que tu veux ...

    As tu seulement un code en C ???????

    poste nous la partie ou tu recupere ce "nombre binaire" dans ton code.

    Le C, c'est un langage de programmation, pas de la magie.

  14. #14
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    dans un int;

    voila le code

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    #include "libgiohot.h"
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    #include <stdio.h>
     
    int main(){
            int entrer = ((GIO_LINE_16) | (GIO_LINE_17) | (GIO_LINE_18) | (GIO_LINE_19)) ;
            int sortie = ((GIO_LINE_8) | (GIO_LINE_9) | (GIO_LINE_10) | (GIO_LINE_11)) ;
            int fd  , i=0, bin ;
            if (( fd = open("/dev/gpiog",O_RDWR)) < 0){
                    printf("GPIOG port not opened \n");
            }
     
     
           giohot_init_output(fd, 0x0000FF00 );//mise en sortie des lignes 8 à 15
           giohot_init_input(fd, 0x00FF0000 );//mise en entrée des lignes 16 à 23
     
           while(i<=100){
              giohot_clear_output(fd, sortie); //mise a zéro sur
                                                         //l'entrée 16,17,18,19     
              bin = giohot_get_input(fd, entrer);  //lecture des entré 
                                                              //suivant le mansk proposé
              sleep (1);
              giohot_bitprintf(bin);
            i++;
     
            }
     
     
     
            close ( fd);
            return 0;
     
     
     
     
    }

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Ahhhhhh, on avance enfin !


    Bon, est-ce que ce fameux nombre binaire correspond a la variable bin ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bin = giohot_get_input(fd, entrer); //lecture des entré
    Ou alors tu la recupere autre part ?

  16. #16
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    giohot_get_input(fd, entrer); sert a faire une lecture en binaire
    et après je l'insère dans int bin , giohot_get_input(fd, entrer);

    et après je l'affiche avec le code avant qui est juste en dessous

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Bon, alors a ton avis, de quel type est la variable qui correspond a ton nombre binaire ? C'est INT !!!

    Donc maintenant, on peut te répondre correctement car on a un minimum d'information (excuse moi de m'énerver, mais 10 post pour te faire dire INT ....).

    Bref, on peut faire une fonction qui se chargera de faire une inversion.
    Malheureusement, je ne suis pas très calé pour les manipulation bit a bit.

    Je vais me renseigner, mais il va falloir que tu attende quelqu'un d'autre. J'editerai peut etre ce soir si je trouve.

  18. #18
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Par défaut
    merci c'est gentil,
    juste pour dire qu'au lieu d'avoir msb.........................................lsb
    je veux juste avoir lsb...........................................msb

  19. #19
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    En clair, en vérité tu veux 0x78563412, c'est-à-dire changer l'endianness du nombre?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 084
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    En clair, en vérité tu veux 0x78563412, c'est-à-dire changer l'endianness du nombre?
    Non, il veut simplement inverser la serie de bit

    1100101011110000

    0000111101010011



    C'est bien ca ?

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