4 variables 4 bits dans 1 variable 16bits

Slt à tous,

Je planche actuellement sur un capteur dont la réponse est codée sur la durée de 4 impulsions consécutives.

la durée de chaque impulsion me donne une variable décimale codé sur 4 bits ( donc de 0-15). la réponse de mon capteur corresponds donc à un nombre codée sur 16 bits.

Ma question: Comment faire pour stocker ces 4 Nibbles ( Nibble = paquet de 4 bits ) dans une seule variable 16 bits en respectant les MSB et LSB.

comment je souhaite procéder:

  • convertir chaque Nibble en binaire
  • stocker chacun des Nibbles dans une variable binaire 16bits en respectant les MSB et LSB
  • reconvertir la binaire 16bits en décimal

cordialement

hello
les "mask", les "shift" et les opérations logiques

Bonjour,

Il suffit de regrouper les nibbles en un mot

  byte nibble[4];
  ...
  word val=nibble[0]+(nibble[1]<<4)+(nibble[2]<<8)+(nibble[3]<<12);

Ausmoz1:

  • convertir chaque Nibble en binaire

  • reconvertir la binaire 16bits en décimal

Pour ces deux points, le compilo le fait tout seul, rien à faire pour l'utilisateur.
Il faut juste lui spécifier quand tu utilise

du binaire en utilisant le marqueur:
0b
ex: 0b1001 pour 9 en base 10

de l'hexadecimal en utilisant le marqueur:
0x
ex: 0xFF pour 255 en base 10

Merci pour toutes vos réponses, je met sa en place et je publierai le code final.