Reconnaitre un hexadecimal négatif
Pixelstock
-
nicocorico Messages postés 846 Statut Membre -
nicocorico Messages postés 846 Statut Membre -
Bonjour,
Dans le cadre d'un projet, je dois réaliser un programme qui interprète une liste de commande. Certaines de ces commandes ont des arguments en hexadecimal qui peuvent être des valeurs négatives. La méthode utilisée est two's complement. Je n'arrive pas à différencier les valeurs positives et négatives.
Voici par exemple des lignes qui me posent problème:
- down4 fd8736d0
- down3 0c0000
- down3 46b9f2
- right3 ff2aaa
J'aimerai savoir quel est la méthode pour identifier si le nombre hexa est positif et négatif.
Merci d'avance pour votre aide.
Dans le cadre d'un projet, je dois réaliser un programme qui interprète une liste de commande. Certaines de ces commandes ont des arguments en hexadecimal qui peuvent être des valeurs négatives. La méthode utilisée est two's complement. Je n'arrive pas à différencier les valeurs positives et négatives.
Voici par exemple des lignes qui me posent problème:
- down4 fd8736d0
- down3 0c0000
- down3 46b9f2
- right3 ff2aaa
J'aimerai savoir quel est la méthode pour identifier si le nombre hexa est positif et négatif.
Merci d'avance pour votre aide.
A voir également:
- Hexadecimal negatif
- Éditeur hexadécimal - Télécharger - Édition & Programmation
- Negatif telephonique - Guide
- Retrait négatif word - Guide
- Fil noir et blanc positif ou négatif ✓ - Forum Enceintes / HiFi
- Comment enlever le mode négatif sur samsung ✓ - Forum Téléphones & tablettes Android
Mais si on part du principe que les valeurs sont en 32 bits, en héxa ça donne 8 chiffres pour définir chaque valeur,
ensuite soit il n'y a pas 8 chiffres, la valeur est donc forcément positive, soit il y a 8 chiffres, et si le chiffre le plus à gauche dépasse $7, la valeur est forcément négative, positive sinon.
Donc :
Si c'est bien cela, pourriez-vous également m'indiquer la méthode de conversion pour passer d'un valeur hexadécimal négative à son équivalent en décimal. J'ai lu beaucoup de chose la dessus et j'ai peur de mettre complément embrouillé ! (à partir de fd8736d0 par exemple)
Merci !
Et pour convertir en décimal simplement, on commence par tester si la valeur est négative et si c'est le cas on le prend en compte dans la valeur décimale puis tu fais un complément à 2.
Ensuite il suffit de faire une boucle qui divise par 10 tant que la valeur est > 0, et chaques restes de division obtenus constituent les chiffres décimaux, en commençant par le plus faible...
ff2aaa <=> 111111110010101010101010 en binaire
complément à deux : 000000001101010101010110
000000001101010101010110 <=> 54614 et donc mon résultat est -54614
C'est correct ?