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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
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.