OVH Cloud OVH Cloud

Representation signee et symetrie

1 réponse
Avatar
Marc Boyer
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 :-(

1 réponse

Avatar
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 :-(