Programmation C++
Résolu
kira33
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
kira33 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
kira33 Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Est ce vous pouvez m'expliquer la conséquence des instructions suivantes sur la variable "deplacement"(contenu) :
u_short deplacement=258;
deplacement <<= 3;
deplacement >>= 3;
Merci pour votre aide.
Est ce vous pouvez m'expliquer la conséquence des instructions suivantes sur la variable "deplacement"(contenu) :
u_short deplacement=258;
deplacement <<= 3;
deplacement >>= 3;
Merci pour votre aide.
A voir également:
- Programmation C++
- Application de programmation - Guide
- Programmation envoi sms - Guide
- Programmation binaire - Guide
- Programmation vb - Télécharger - Langages
- Programmation télécommande porte de garage brico depot - Forum Matériel & Système
4 réponses
Ah oui, j'ai pas pensé à l'int overflow.
En fait, ces deux opérations vont permettre d'enlever les trois premiers bits de gauche. Les trois retenus vont disparaître.
En parlant de modulo, pour des unsigned char, cela revient à :
Ou retenons simplement que les trois bits de gauche vont disparaître comme si on appliquant un masque avec un AND bit à bit. C'est donc l'équivalent de :
De plus attention, à ne pas initialiser ta variable à 258 si c'est un unsigned char.
Cdlt
En fait, ces deux opérations vont permettre d'enlever les trois premiers bits de gauche. Les trois retenus vont disparaître.
En parlant de modulo, pour des unsigned char, cela revient à :
((a%224)%192%128);.
Ou retenons simplement que les trois bits de gauche vont disparaître comme si on appliquant un masque avec un AND bit à bit. C'est donc l'équivalent de :
a&31;Plus rapide.
De plus attention, à ne pas initialiser ta variable à 258 si c'est un unsigned char.
Cdlt
Sauf si tu fait un overflow non ?
Les bits sortant sont remis de l'autre coté ?
Si c'est ce que je pense, ça fait une espèce de modulo.
Les bits sortant sont remis de l'autre coté ?
Si c'est ce que je pense, ça fait une espèce de modulo.
Effectivement, en cherchant dans le source j'ai compris que cette variable représente le champs " Fragment Offset + Flags" d'un paquet IP. Puisque les "flags" sont codés sur 3 bits, Le but est de garder que l'information "Offset" qui est sur 13 bits dans la variable "deplacement" car les trois premiers bits de gauche ont disparu .
Merci pour les repenses.
Merci pour les repenses.