2016-05-11 1 views
0

Un utilisateur nommé ZPiDER a répondu à une question sur la génération de chaînes de couleurs aléatoires dans JS.Quelle est la signification de "<<" dans javascript?

Random color generator in JavaScript

Voici le code:

"#"+((1<<24)*Math.random()|0).toString(16) 

Je suis en train de l'analyser pour comprendre comment cela fonctionne, mais je ne comprends vraiment pas. Quelqu'un pourrait s'il vous plaît expliquer ce que le < < signifie?

J'ai essayé google mais je soupçonne que les moteurs de recherche interprètent les caractères comme quelque chose de spécial.

+0

Google pour "opérateurs JavaScript", à peu près tous les meilleurs résultats contient la réponse. – Mifeet

+0

Je ne pense pas qu'il soit juste d'appeler cela une copie de cette question parce que je n'avais aucune idée que cela s'appelait en premier lieu. J'ai cherché "<< en javascript" et variations et je n'ai pas vraiment trouvé de nom. En outre, je pensais que cela avait quelque chose à voir avec l'entrée ou la sortie comme je le vois utilisé en C++. – xerotolerant

+0

Je pense que le point est que cette question n'est pas utile pour les autres puisque ce type d'opérateur a déjà été expliqué sur SO plusieurs fois. De plus, les gens ne seront pas en mesure de google de toute façon;) – Mifeet

Répondre

1

Il est l'opérateur de décalage vers la gauche comme dans beaucoup d'autres langages comme C ou Java.

1<<24 signifie que le 1 gauche est décalé de 24 bits, vous obtenez ainsi 0x1000000. Multiplié par une valeur aléatoire (c'est-à-dire de 0 inclus à 1 exclusif), vous obtenez quelque chose entre 0x000000 et 0xFFFFFF. C'est exactement ce que vous voulez faire pour une couleur aléatoire. Mais gardez à l'esprit, que l'auteur de ce code ne respecte pas, que cette fonction aléatoire ne génère pas de valeurs aléatoires uniformément distribuées. Il est donc probable que vous n'obtenez pas une "vraie" couleur aléatoire, mais quelque chose de très proche.

0

< < ou >> est l'opération de bit, le décalage de bits. Cela prend deux arguments, par exemple x < < y. C'est x: 1 1 0 0 0 1 1 1. Permet de déplacer par 3 octets de droite: 1 1 1 1 1 0 0 0

1

Ceci est un décalage de bit: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

Le numéro 1 (2^0) sont décalées à gauche de 24 bits pour devenir 16777216 (2^24). De la documentation:

< < (décalage à gauche)

Cet opérateur décale le premier opérande du nombre spécifié de bits vers la gauche. Les bits excédentaires décalés vers la gauche sont mis au rebut. Les bits zéro sont décalés de la droite.

Par exemple, 9 < < 2 cède 36: