Bonjour à tous,
je suis entrain de retaper une application Javascript en python, et je suis tombé sur un problème:
à un moment dans le script, je tombe sur un ligne:
alors, je farfouille un peu et je trouve ceci sur un autre site :
Code : Sélectionner tout - Visualiser dans une fenêtre à part return (x<<n)
Okay... alors, on refait le truc a la mano ensemble,<< :: Rotation à gauche :: Décale les bits vers la gauche (multiplie par 2 à chaque décalage). Les zéros qui sortent à gauche sont perdus, tandis que des zéros sont insérés à droite
pour x = 1751007518
et n = 1
Donc, okay, ça correspond bien à une multiplication par 2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 (dec)1751007518 = (bin)1101000010111100100000100011110 on décalle le bit : 11010000101111001000001000111100 (bin)11010000101111001000001000111100 = (dec)3502015036
et c'est d'ailleur ce que python me reponds si je lui demande "1751007518<<1"
Alors.... pourquoi en javascript "alert(1751007518<<1)" me renvoie -792952260 ???? oO
en regardant d'un peu plus pres, Si on compare un peu les deux valeur binaire:
j'ai remarquer que les valeur en rouge était des inverses, mais c'est la seule piste que j'ai...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 1101000010111100100000100011110 (1751007518) __101111010000110111110111000100 (-792952260)
Ou peut être un problème avec le bit du signe ?
Donc voila, si quelqu'un à une explication, voir un bout de code (python) qui me permetrai de faire quelque chose l'équivalent ça serrait super ^^
Partager