Toujours à me battre avec les entiers signés, ma question
du jour est:
- en complement à deux, on a une représentation non
symétyrique
numeric_limitsr<T>::min() == - numeric_limits<T>::max() - 1
- en representation mantisse signe, c'est symétrique
numeric_limits<T>::min() == - numeric_limits<T>::max()
mais pour les autres representation ?
En gros, si je définis
T interval_middle= numeric_limits<T>::min()
+ numeric_limits<T>::max();
Est-ce que j'ai
interval_middle <= 0
pour tout type T entier signé ?
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Boyer
Ivan Vecerina wrote:
"Marc Boyer" wrote in message news:bgo12u$6nv$ | Toujours à me battre avec les entiers signés, ma question | du jour est: | - en complement à deux, on a une représentation non | symétyrique | numeric_limitsr<T>::min() == - numeric_limits<T>::max() - 1 | - en representation mantisse signe, c'est symétrique | numeric_limits<T>::min() == - numeric_limits<T>::max() | mais pour les autres representation ?
Il reste encore la représentation en complément à un, dont le résultat serait équivalent à celle en mantisse-signe.
OK
Si l'on se fie au standard C de 1999, seules ces 3 représentations sont autorisées. Le C++ n'incorpore que le standard de 1989 (qui n'était pas aussi restrictif je pense), mais le C99 n'a fait que codifier ce que sont les pratiques existantes je crois.
| En gros, si je définis | T interval_middle= numeric_limits<T>::min() | + numeric_limits<T>::max(); | Est-ce que j'ai | interval_middle <= 0 | pour tout type T entier signé ?
Encore plus spécifique, selon le standard C de 1999: interval_middle==0 || interval_middle==-1 En pratique, on ne rencontrera rien d'autre en C++ non plus.
Bon, alors je peux virer tous mes if (interval_middle>0) de mon code alors... Je mets ça sur ma "TO DO list". Pour une fois que j'ai été trop prévoyant...
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(
Ivan Vecerina wrote:
"Marc Boyer" <Marc.Boyer@enseeiht.yahoo.fr> wrote in message
news:bgo12u$6nv$1@news.cict.fr...
| Toujours à me battre avec les entiers signés, ma question
| du jour est:
| - en complement à deux, on a une représentation non
| symétyrique
| numeric_limitsr<T>::min() == - numeric_limits<T>::max() - 1
| - en representation mantisse signe, c'est symétrique
| numeric_limits<T>::min() == - numeric_limits<T>::max()
| mais pour les autres representation ?
Il reste encore la représentation en complément à un,
dont le résultat serait équivalent à celle en mantisse-signe.
OK
Si l'on se fie au standard C de 1999, seules ces 3
représentations sont autorisées. Le C++ n'incorpore que
le standard de 1989 (qui n'était pas aussi restrictif
je pense), mais le C99 n'a fait que codifier ce que
sont les pratiques existantes je crois.
| En gros, si je définis
| T interval_middle= numeric_limits<T>::min()
| + numeric_limits<T>::max();
| Est-ce que j'ai
| interval_middle <= 0
| pour tout type T entier signé ?
Encore plus spécifique, selon le standard C de 1999:
interval_middle==0 || interval_middle==-1
En pratique, on ne rencontrera rien d'autre en C++ non plus.
Bon, alors je peux virer tous mes if (interval_middle>0)
de mon code alors...
Je mets ça sur ma "TO DO list".
Pour une fois que j'ai été trop prévoyant...
Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(
"Marc Boyer" wrote in message news:bgo12u$6nv$ | Toujours à me battre avec les entiers signés, ma question | du jour est: | - en complement à deux, on a une représentation non | symétyrique | numeric_limitsr<T>::min() == - numeric_limits<T>::max() - 1 | - en representation mantisse signe, c'est symétrique | numeric_limits<T>::min() == - numeric_limits<T>::max() | mais pour les autres representation ?
Il reste encore la représentation en complément à un, dont le résultat serait équivalent à celle en mantisse-signe.
OK
Si l'on se fie au standard C de 1999, seules ces 3 représentations sont autorisées. Le C++ n'incorpore que le standard de 1989 (qui n'était pas aussi restrictif je pense), mais le C99 n'a fait que codifier ce que sont les pratiques existantes je crois.
| En gros, si je définis | T interval_middle= numeric_limits<T>::min() | + numeric_limits<T>::max(); | Est-ce que j'ai | interval_middle <= 0 | pour tout type T entier signé ?
Encore plus spécifique, selon le standard C de 1999: interval_middle==0 || interval_middle==-1 En pratique, on ne rencontrera rien d'autre en C++ non plus.
Bon, alors je peux virer tous mes if (interval_middle>0) de mon code alors... Je mets ça sur ma "TO DO list". Pour une fois que j'ai été trop prévoyant...
Marc Boyer -- Lying for having sex or lying for making war? Trust US presidents :-(