Gestion des overflow sur des opérations d'addition
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:
Code:
1 2 3 4
| struct{
long LSW;
long MSW;
} INT64; |
le type "long" étant un entier 32-bits.
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:
Citation:
opération E1 + E2
E1: LSW = 2^31
MSW = 15
E2: LSW = 2^5
MSW = 1
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.
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.