Salut à tous !

Voilà une petite chose que j'ai constatée, et qui me tracasse.
Quand on manipule un nombre JavaScript, il est stocké sous forme d'un flottant, même si on ne voit pas toujours la virgule. On peut voir la perte de précision propre au type flottant dans cet exemple :
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
>>> 0x80000000000000000
147573952589676410000
il ne devrait pas y a voir autant de zéros à la fin.

Si on utilise un opérateur binaire, mon nombre est converti en int signé sur 32 bits.
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
>>> 0x80000000
2147483648
>>> 0x80000000 | 1
-2147483647
Là on peut voir le débordement de signe.

Et quand on utilise des nombres qui dépassent 32 bits, ils sont simplement tronqués.
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
>>> 0xabc
2748
>>> 0xabc | 1
2749
>>> 0x100000abc
4294970044
>>> 0x100000abc | 1
2749

Pensez-vous qu'il y a un moyen simple de faire des opérations binaires 64 bits en JavaScript ? J'ai essayé, et j'ai pas l'impression que ça soit possible sans passer par de la grosse bidouille… Il y a bien les ArrayBuffer qui simplifient les choses, mais ça reste laborieux