Bonjour à tous.
Pour la petit histoire, je suis en train de retaper un vieux prog fait en JS vers Python.
Quasiement tout est terminé, sauf pour une chose qui ne veux pas fonctionner: la manipulation de bit.
Précisement, c'est l'operateur "<<" qui me casse les bonbons ^^
En théorie:donc, en théorie (et c'est le cas en python):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
1751007518 << 1 = 3502015036
le soucis c'est qu'avec des nombres aussi grand, en javascript ça "déconne" puisque, si j'ai bien compris, on touche au 32em bit, qui est reservé au bit du signe.
Si bien que, en javascript:
1751007518 << 1 = -792952260
comparaison des nombre binaire:
J'ai aussi remarqué que les deux partie en rouge (le resultat en python et le restulat en js) sont des inverse (NON), je comprends pas exactement pourquoi m'enfin...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 0 1101000010111100100000100011 110 (1751007518) 1 1010000101111001000001000111 100 (3502015036) (res python) 1 0101111010000110111110111000 100 (-792952260) (res js)
Bref, ma question, c'est de savoir comment faire pour reproduire ce "bug" en python pour que la comparaison des nombres enregistrée via l'ancienne application JS coresponde toujours en Python
Pour ceux qui voudrais plus de précision, j'ai déjà pausé quelques question sur ce comportement dans le forum javascript: http://www.developpez.net/forums/d11...e/#post6408962
Edit: Aucune urgence: je viens de me rendre compte que la fonction que j'essayai de recoder est simplement la fonction sha1 mdr ^^
Par contre, par curiosité j'aimerai bien connaître la réponse quand même![]()
Partager