
Envoyé par
leffe
qqun pourrai-til m'aider a répondre a cette question.
Sur un machine 32 bits... il faut écrire une procédure qui fait la somme de deux nombres entiers signés sur 16 bits. Cette procédure doit permettre de détecter les cas de débordements positifs et négatifs. Cette procédure devra afficher le résultat de la somme et indiquer si le résultat correspondant est correct ou est un débordement positif ou négatif.
Merci de votre aide
Le langage C ne spécifie pas qu'un certain type d'entier doit occuper 16 bits en mémoire. Tout ce que dit la norme, c'est:
- un entier de type short doit pouvoir représenter une valeur entre -32767 et 32767
- idem pour un entier de type int
- un entier de type long doit pouvoir représenter une valeur entre -(2**31 - 1) et (2**31 - 1)
De plus la relation suivante doit être vérifiée:
sizeof(short) <= sizeof(int) <= sizeof(long)
Sur certaines architectures, les types short, int et long font tous les trois 64 bits. De plus, le langage C n'impose aucune contrainte sur la manière de représenter les entiers négatifs (complément à deux, complément à 1, bit de signe)
Pour détecter les débordements potentiels tu peux te servir des constantes symboliques SHRT_MIN, SHRT_MAX, INT_MIN, INT_MAX, etc. déclarées dans le fichier d'en-tête standard limits.h.
Thierry
Partager