Qu'est-ce que l'opérateur > > > = en Javascript?
-
06-07-2019 - |
Question
Que fait l'instruction Javascript suivante pour a
?
a >>>= b;
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.