Overflow
Kiwi
-
frederic levillain -
frederic levillain -
Bonjour,
Je cherche comment je peux détecter un problème d'overflow sur le produit de deux longs en utilisant une méthode basée sur des ints. Il m'a été suggéré de "casser" mes ints en nombres de 16 bits et de procéder par shifting et masking, sans plus d'indications... Je ne saisis pas comment procéder. Quelqu'un peut-il me renseigner ?
Merci d'avance
Je cherche comment je peux détecter un problème d'overflow sur le produit de deux longs en utilisant une méthode basée sur des ints. Il m'a été suggéré de "casser" mes ints en nombres de 16 bits et de procéder par shifting et masking, sans plus d'indications... Je ne saisis pas comment procéder. Quelqu'un peut-il me renseigner ?
Merci d'avance
1 réponse
salut,
pour ton Pb je crois qu'il n'est pas necessaire de faire joue-joue avec les bits des variables.
si le but de ta question est juste de savoir si le resultat de ton produit tiens dans un long utilise le bout de code suivant :
if ((DOUBLE) LONG_MAX_VAL < (DOUBLE) valeur1 * (DOUBLE) valeur2)
{
// Overflow !!!!
}
else
{
// Tu travailles ici avec les LONG;
valeur3 = valeur1 * valeur2;
}
Merci a Christophe Maccou pour m'avoir eclairé ;)
pour ton Pb je crois qu'il n'est pas necessaire de faire joue-joue avec les bits des variables.
si le but de ta question est juste de savoir si le resultat de ton produit tiens dans un long utilise le bout de code suivant :
if ((DOUBLE) LONG_MAX_VAL < (DOUBLE) valeur1 * (DOUBLE) valeur2)
{
// Overflow !!!!
}
else
{
// Tu travailles ici avec les LONG;
valeur3 = valeur1 * valeur2;
}
Merci a Christophe Maccou pour m'avoir eclairé ;)