Question

Que fait l'instruction Javascript suivante pour a ?

a >>>= b;
Était-ce utile?

La solution

Il fait la même chose que ceci:

a = a >>> b;

Sauf que a n'est évalué qu'une fois (ce qui a une différence observable si son évaluation implique des effets secondaires).

Et > > > correspond au décalage à droite non signé (logique) .

Autres conseils

Je décale à droite la valeur dans a le nombre de bits spécifié par la valeur dans b, sans conserver le signe.

C’est comme l’opérateur > > = que les droits modifient une valeur, mais que celle-ci ne modifie pas le signe du nombre.

Exemple:

var a = -1;

// a now contains -1, or 11111111 11111111 11111111 11111111 binary

var b = 1;
a >>>= b;

// a now contains 2147483647, or 01111111 11111111 11111111 11111111 binary.

Il s’agit d’un opérateur au niveau des bits appelé décalage de remplissage à zéro. Cela décale la représentation binaire de a à droite de b et remplace les éléments vides par des zéros. Ensuite, le résultat sera attribué à a .

Crockford souligne que, même si JavaScript a des opérateurs au niveau des bits tels que > > > , leur utilisation sur ses nombres à virgule flottante double précision natifs implique une conversion en interne en entiers. Ils ne seront pas aussi efficaces que dans d’autres langues avec des types de données entiers natifs.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top