Bitwise XOR (^) (Operator/bitwise)

Bitwise XOR one operand with another.

Availability:

ECMAScript edition - 2
JavaScript - 1.0
JScript - 1.0
Internet Explorer - 3.02
Netscape - 2.0
Netscape Enterprise Server - 2.0
Opera - 3.0
Property/method value type:Number primitive
JavaScript syntax:-anOperand1 ^ anOperand2
Argument list:anOperand1A numeric value
anOperand2Another numeric value

Performs a bit-by-bit XOR of the 32-bit value derived from both operands.

Where a corresponding bit is different in both operands, a 1 bit will be inserted into the result. If the corresponding bit is identical in both operands, regardless of whether they both have a 1 bit or a zero bit, a zero will be inserted at that bit position in the result.

The associativity is left to right.

Refer to the Operator Precedence topic for details of execution order.

This is the truth table for two Boolean primitive values being operated on with the XOR operator.

ABXOR
falsefalsefalse
falsetruetrue
truefalsetrue
truetruefalse

The bitwise operator performs this operation on each corresponding bit pair in the two operands.

Example code:

   <HTML>

   <HEAD></HEAD>

   <BODY>

   <SCRIPT>

   myValue1 = 0xFFFF;

   myValue2 = 0x0FF0;

   myValue3 = myValue1 ^ myValue2;

   document.write("Val 1 : " + binary32(myValue1) + "<BR>");

   document.write("Val 2 : " + binary32(myValue2) + "<BR>");

   document.write("XOR : " + binary32(myValue3) + "<BR>");

   // Binary convertor (ignore sign bit on MSIE)

   function binary32(aValue)

   {

      myArray = new Array(32);

   

      for(myEnum=0; myEnum<32; myEnum++)

      {

         if(aValue & Math.pow(2, myEnum))

         {

            myArray[31-myEnum] = "1";

         }

         else

         {

            myArray[31-myEnum] = "0";

         }

      }

      return myArray.join("");

   }

   </SCRIPT>

   </BODY>

   </HTML>

See also:Associativity, Binary bitwise operator, Bit-field, Bitwise XOR and assign (^=), Logical XOR, Operator Precedence

insert figure 0111

Cross-references:

ECMA 262 edition 2 - section - 11.10

ECMA 262 edition 3 - section - 11.10