Il convient de noter que si l'on utilise la fonction BigInt Le masque de bits n'est alors limité que par les contraintes de mémoire, de sorte que l'on peut gérer des masques bien au-delà de 32 bits. En suivant généralement les lignes de la question, par exemple, on peut définir un masque de 127 bits à tous les 1 comme suit...
x = ( 1n << 128n ) - 1n
- x : 340282366920938463463374607431768211455n
- x.toString(2) : 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
...et ensuite, disons, effacer le bit 16...
x &= ~( 1n << 16n )
- x : 340282366920938463463374607431768145919n
- x.toString(2) : 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111101111111111111111
...et vérifier si un bit, disons 17, est activé...
( ( 1n << 17n ) & x )== 0n
...ou vérifier si le bit 16 est activé...
( ( 1n << 16n ) & x )== 0n
JavaScript dispose également de la fonction BigUint64Array qui est un tableau typé d'entiers BigInt non signés de 64 bits dans l'ordre des octets de la plate-forme. Il s'agit également d'une option pour les masques de bits de 33 à 64 bits...
Notez que pour les masques BigInt extrêmes, il sera probablement plus performant de gérer un tableau de Uint32 comme masque de bits collectif plutôt que d'utiliser les fonctions natives de manipulation de bits BigInt. Ainsi, si les performances sont en jeu, il faudra expérimenter pour déterminer si les masques de bits BigInt sont acceptables pour le cas d'utilisation en question...