2013-04-07 3 views
5

J'essaie de comprendre cet opérateur sur JS -Quelle est la signification de^= opérateur JS

'string' ^= 'string'; 

Mais je ne peux pas trouver de l'information fourmi. Est-ce une comparaison ou une affectation?

Merci.

+0

Si le titre générique was't si je pourrais trouver ce double :( – shannoga

+2

Vous dites que vous avez vu '^ =' utilisé sur les chaînes réelles? – 0x499602D2

Répondre

7

myVar ^= 5 est la même que myVar = myVar^5. ^ est l'opérateur au niveau du bit xor

Disons que myVar a été réglé sur 2

  • 5 en binaire est: 101
  • 2 en binaire est: 010

exclusif "ou" contrôle les premier bit des deux nombres et voit 1,0 et renvoie 1 puis voit 0,1 et renvoie 1 et voit 1,0 et renvoie 1.

Ainsi 111 qui reconverti en décimal est 7

Donc 5^2 est 7

var myVar = 2; 
myVar ^= 5; 
alert(myVar); // 7 
+0

Vous pourriez envisager d'éditer la partie '5^2 is 7' Je pensais un instant que vous vouliez dire '5 à la puissance de 2', qui est, bien sûr, 25 et non 7. – 11684

+0

@ 11684: Mathématiques.pow fait ça en JavaScript. Rien à confondre ici. alerte (5^2); // 7 – Thalaivar

+1

Je sais, mais c'était encore confus. J'ai + ajouté après que vous l'ayez enveloppé dans 's. – 11684

2

x ^= y est bitwise XOR et raccourci pour x = x^y - et donc est techniquement une "affectation" pour répondre à votre question. Et pour être précis, l'opérateur unique '^' indique le XOR bit à bit. (Caret) est l'opérateur Bitwise XOR (Exclusif Ou). Comme pour les combinaisons d'opérateurs plus courantes telles que +=, a ^= b est équivalent à a = a^b. Pour plus de détails, veuillez consulter le Javascript documentation from Mozilla.

+0

Non, XOR est '! = '.' '^ est – Bergi

+1

Huh? Cela est 'n'est pas'. @Bergi – 11684

+0

@ 11684: Ensuite, vérifiez les tables de vérité.Cette réponse est inutile tant qu'il ne mentionne pas que c'est un [opérateur bit à bit] (https: // développeur .mozilla.org/fr-fr/docs/JavaScript/Reference/Operators/Bitwise_Operators) (dans un raccourci de devoir) – Bergi

1

Comme d'alar'cop (et plusieurs autres maintenant) déjà souligné, cela signifie que l'on appelle XOR. Je déteste toujours lire une explication wikipedia, donc je vais mettre une autre explication ici:

'XOR' signifie 'OU exclusif'. Qu'est-ce que c'est? Tout d'abord un exemple:

11000110 -- random byte 
10010100 
---------^-- XOR 
01010010 

XOR est une opération de bits, de retour de deux si l'un des deux bits est 1 et l'autre 0. Si elles sont à la fois 1, il est « et » non « ou exclusif » (» normal ou 'permettrait deux 1').

Questions connexes