Bonjour,
Pour mon projet (dont je doit rendre un premier contre-rendu le 20 avril :'( ) J'ai un gros problème que je n'arrive pas à résoudre depuis plusieurs semaine. Je dispose d'une grille de 64 cases. Pour modéliser un ensemble de position d'un type objet B donné, je voulais coder des entiers sur 64 bits où si B est présent à la i-ème case, alors le i-ème bit vaudra 1 et sinon 0. Comme ça si je veux savoir si des ensembles on des positions en commun ou aucune, inclusion d'ensemble etc.. j'étais sensé pourvoir utilisé les opérations logique & || (intersection, inclusion) pour pouvoir gagner du temps. Malheureusement, quand je teste avec des petits nombres, pas de problème mais avec de grand nombre ça me renvoie soit un truc qui n'a rien à voir, soit 0.
Exemple :
Est-ce un problème d'encodage avec les grands nombres ou il y a un moyen de contourner ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 console.log((111 & 101)); // renvoie 101 comme attendue console.log((1001000000 & 1000000000)); // renvoie 998901760 console.log((998901760).toString(2)); // Mais en binaire ça correspond à 111011100010100000100000000000
Partager