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 147573952589676410000il 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 -2147483647Là 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![]()
Partager