Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

[C]-Problème de compréhension d'une manipulation de bits

  1. jorg1n

    Date d'inscription
    septembre 2007
    Messages
    1 873

    [C]-Problème de compréhension d'une manipulation de bits

    Bonjour,

    j'utilise un soft pour gérer une communication modbus, et pour comprendre son fonctionnement, je fais du pas à pas, mais il y a un passage que je ne comprend pas.
    j'ai comme déclaration:
    Code:
    union transform{
    struct twoBytes{
    	unsigned char lowByte;
    	unsigned char highByte;
            }bytes;
    unsigned int integer;
    }T; 
    
    unsigned char buffer[74];
    et je ne comprend pas l'avant dernière ligne de ce morceau:
    Code:
    T.bytes.lowByte = buffer[3]; 
    T.bytes.highByte = buffer[2]; 
    T.integer*=2;
    buffer[2] = buffer[5]*2;
    Alors pour les lignes 1 et 2, buffer[3] = 0XF5 et buffer[1] = 0x01,
    donc T.bytes.lowByte = 0XF5 et T.bytes.highByte = 0x01 donc "integer" = 0x01F5, mais après, je ne vois pas du tout ce que ça fais le :
    Code:
    T.integer*=2;
    par contre "integer" = 0x03EA
    T.bytes.lowByte = 0XEA
    T.bytes.highByte = 0x03

    Quelqu'un peut m'expliquer ce que ça fait exactement??

    Si vous souhaiter plus d'info sur le soft, je peux vous transmettre le tout.

    Bonne fin de journée a tous
     


    • Publicité



  2. sdec25

    Date d'inscription
    mai 2008
    Localisation
    Doubs
    Âge
    26
    Messages
    914

    Re : [C]-Problème de compréhension d'une manipulation de bits

    Bonjour.
    En C,
    Code:
    x *= y
    équivaut à
    Code:
    x = x*y
    Dans ton cas ça multiplie T par 2.
    Il existe, de la même manière les opérateurs +=, /= et -=
     

  3. jorg1n

    Date d'inscription
    septembre 2007
    Messages
    1 873

    Thumbs down Re : [C]-Problème de compréhension d'une manipulation de bits

    Merci Sdec25,

    et pourquoi la valeur de
    T.bytes.lowByte et T.bytes.highByte change aussi?

    Merci encore...
     

  4. sdec25

    Date d'inscription
    mai 2008
    Localisation
    Doubs
    Âge
    26
    Messages
    914

    Re : [C]-Problème de compréhension d'une manipulation de bits

    Citation Envoyé par jorg1n Voir le message
    et pourquoi la valeur de
    T.bytes.lowByte et T.bytes.highByte change aussi?
    A cause de l'union. Une union est une structure dans laquelle tous les éléments sont au même emplacement mémoire.
    http://wiki.answers.com/Q/What_is_a_...the_C_language
    Code:
    union transform{
    struct twoBytes{
    	unsigned char lowByte;
    	unsigned char highByte;
            }bytes;
    unsigned int integer;
    }T;
    Dans ce cas-là, "integer" et la struct "twoBytes" désignent la même variable. integer est sur 2 octets (int) et lowByte et highByte sont chacun sur 1 octet.
    Donc lowByte = poids faible de integer, et highByte = poids fort de integer.

    Pour faire la même chose sans l'union on pourrait utiliser les pointeurs mais c'est moins élégant.
    char* lowByte = (char*) &integer;
    *lowByte désigne alors le poids faible de integer.
    A noter qu'on est en little endian (http://fr.wikipedia.org/wiki/Endianness). Donc poids faible en premier.
    Dernière modification par sdec25 ; 23/07/2009 à 17h09.
     


    • Publicité





 

Discussions similaires

  1. [C] - Manipulation des bits
    Par jorg1n dans le forum Électronique
    Réponses: 2
    Dernier message: 01/04/2009, 08h23
  2. Problème de compréhension d'un schéma
    Par 3nTiC dans le forum Électronique
    Réponses: 2
    Dernier message: 03/02/2009, 16h10
  3. Manipulation de bits en langage C
    Par youril dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 08/11/2007, 16h59
  4. Problème de compréhension d'un graphique
    Par carter21 dans le forum Biologie
    Réponses: 4
    Dernier message: 13/04/2007, 18h51
  5. Convertir 12 bits série en 7 bits paralléle avec un HC11 ?
    Par djsat dans le forum Électronique
    Réponses: 2
    Dernier message: 03/03/2005, 08h39

A voir en priorité dans les contenus de Futura-Sciences : genetique manipulation, ...
Nous vous recommandons : ...