Partage
  • Partager sur Facebook
  • Partager sur Twitter

Operations binaires

Avec le port parrallèle

    21 décembre 2006 à 17:28:56

    Bonjour,

    J'utilise inpout32.dll, qui permet la gestion du port parra. Pour l'envoit de données, je dois envoyer un nombre decimal. Cepependant je dois utiliser chaques bits de données indépendement, donc pouvoir traiter chaque bit du nombre décimal et pouvoir donc les changer.
    Seulement je ne connais pas du tout les opérations binaires. Qu'elqu'un peut-t'il m'aider ?

    Merci ;)
    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2006 à 18:02:40

      Citation : Unibozu

      Bonjour,

      J'utilise inpout32.dll, qui permet la gestion du port parra. Pour l'envoit de données, je dois envoyer un nombre decimal. Cepependant je dois utiliser chaques bits de données indépendement, donc pouvoir traiter chaque bit du nombre décimal et pouvoir donc les changer.
      Seulement je ne connais pas du tout les opérations binaires. Qu'elqu'un peut-t'il m'aider ?

      Merci ;)



      Jsais pas si j'ai compris ce qu'il fallait, mais je vais essayer
      Tu veux pouvoir convertir l'état de chaque bit du port, en un nombre entier ? (pourquoi décimal ?)

      Pour faire dans ce sens il suffit que si un bit est à 1, tu ajoutes à une variable son poids. Exemple :

      Tu veux envoyer 11101011 sur le port, tu fais :
      1 + 2 + 4 + 16 + 64 + 128, t'envoie cette valeur à ta fonction et rullez :)

      Dans l'autre sens, tu commences à vérifier si ta variable est supérieure au poids du bit de plus fort (donc 128 sur 8 bits) si c'est le cas du retranche le poids de ce bit à cette variable et tu enregistre qq part que ce bit est à 1, sinon tu ne fais rien, et tu continue à baissant d'un bit à la fois jusqu'a ce que ta variable vale 0.
      • Partager sur Facebook
      • Partager sur Twitter
        22 décembre 2006 à 0:19:35

        les opérations binaires se font avec :
        & : AND
        | : OR
        >> : décalage binaire à droite
        << : décalage binaire à gauche
        ^ : XOR

        Valeur d'un bit:
        Soit a un entier, et i le bit (de 0 à n) alors ((a>>i)&1) te donne la valeur du bit i de a.
        Mettre un bit à 1:
        Soit a un entier, et i le bit (de 0 à n) à mettre à 1
        a|=(1<<i);

        Mettre un bit à 0:
        Soit a un entier, et i le bit ( de 0 à n) à mettre à 0, et on fixant qu'on travaille sur 4 bits.
        a&=(0xF^(1<<i));


        le 0xF est directement lié au fait qu'on travail sur 4 bits. il faut l'adapter en fonction du nombre de bits sur lequel tu travailles.
        • Partager sur Facebook
        • Partager sur Twitter
          22 décembre 2006 à 0:24:52

          Citation : Unibozu

          Bonjour,

          J'utilise inpout32.dll, qui permet la gestion du port parra. Pour l'envoit de données, je dois envoyer un nombre decimal. Cepependant je dois utiliser chaques bits de données indépendement, donc pouvoir traiter chaque bit du nombre décimal et pouvoir donc les changer.
          Seulement je ne connais pas du tout les opérations binaires. Qu'elqu'un peut-t'il m'aider ?

          Merci ;)


          Ya rien à faire. La représentation interne des données est binaire. Pour metre 123 dans le port parallèle, tu fais
          outportb (0x378‚ 123);

          c'est tout. Mais le décimal, c'est pas clair. Ce qui ressemble le plus à du binaire, c'est l'hexadécimal :

          Si tu veux 11001010, ca fait 1100 1010, soit 0xCA

          outportb (0x378‚ 0xCA);


          La valeur 0x378 peut changer d'une machine ou d'un port // à l'autre...
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !

          Operations binaires

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown