Même l'incidence d'un décalage sur la valeur arithmétique n'est pas défini, puisque la représentation binaire interne n'est pas imposée.
Comment ça se passe sur intel...
Type signé décalé à droite: Le bit de signe est dupliqué/propagé.
Les autres cas: Tous les bits sont décalés, des 0 sont introduits.
A cause de cette particularité, j'ai voulu créer un "sign_cast<signed>(n)", mais j'y arrive pas.
leneuf22 a écrit a écrit :
Et... le bit de signe est conservé du début à la fin : x est négatif et y positif !
...je ne comprends pas
|
Tes int font probablement 32 bits. Tu as donc écrasé un 1 avec un 1, et un 0 avec un 0.
Essaie ça:
Code :
- #include <limits.h>
- signed int si=1;
- si<<=sizeof(signed int)*CHAR_BIT-2;
- si<<=1;
|
bjone a écrit a écrit :
un décallage à gauche conserve le signe.
|
Ben justement non...
---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone