Opérations binaires 64 bits
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:
1 2
| >>> 0x80000000000000000
147573952589676410000 |
:arrow: 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:
1 2 3 4
| >>> 0x80000000
2147483648
>>> 0x80000000 | 1
-2147483647 |
:arrow: 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:
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 :|