Bonjour,
je souhaite faire une opération d'addition entre des entiers signés de 64-bits. Vu que le processeur cible est un 32-bits, j'ai dû créer une structure dans mon programme C:
le type "long" étant un entier 32-bits.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct{ long LSW; long MSW; } INT64;
Mon problème se situe au niveau de la gestion des overflow. les spécifications sont telles qu'on ne pourrait atteindre la valeur maximale possible avec un 64-bits. Donc, les overflows n'apparaissent qu'au niveau des opérations entre LSW.
Exemple:En ce qui concerne la détection des overflows, il faut vérifier dans le cas où les deux opérandes sont du même signe que le résultat de l'addition l'est également; sinon, il y a overflow.opération E1 + E2
E1: LSW = 2^31
MSW = 15
E2: LSW = 2^5
MSW = 1
Ma préoccupation est de pouvoir reporter la retenue de l'opération entre les LSW sur celle entre les MSW.
Merci de m'aider à trouver une solution.
ps: j'espère que j'ai été claire.
Partager