What does the ^ operator do in Java? (7 words)

What is the purpose of the ^ operator in Java, and how does it work?

I was experimenting with the ^ operator in Java and noticed that it doesn’t behave like exponentiation. For example, when I try this:

int a = 5 ^ n;

I get the following results:

  • For n = 5, it returns 0.
  • For n = 4, it returns 1.
  • For n = 6, it returns 3.

So, I’m guessing ^ is not for exponentiation. What exactly does the ^ operator do in Java, and how does it work in different scenarios? I read something about it being related to Java XOR operations, but I’d love a clear explanation.

Actually, it’s a common misconception to think the ^ operator in Java is for exponentiation. In reality, it’s the XOR (exclusive OR) operator.

:hammer_and_wrench: Understanding Java XOR for Bits The ^ operator performs a bitwise XOR, comparing each bit of two numbers:

  • 1 if the bits are different.
  • 0 if the bits are the same.

:white_check_mark: Example:

int result = 5 ^ 3;  // 5 in binary:  101  
                      // 3 in binary:  011  
                      // XOR result:   110  (which is 6)  
System.out.println(result);  // Output: 6  

This also explains why 5 ^ 5 = 0—since all bits are the same, they cancel out. Pretty neat trick with Java XOR!

That’s a great explanation, Here’s another cool trick using Java XOR: you can swap two variables without needing a temporary one.

:repeat: Swapping Values Without a Temp Variable

int a = 5, b = 3;  
a = a ^ b;  // Step 1  
b = a ^ b;  // Step 2  
a = a ^ b;  // Step 3  
System.out.println("a = " + a + ", b = " + b);  // Output: a = 3, b = 5  

This works because XOR operations are reversible, making it a clever way to swap values in Java without extra memory. Try it out and impress your colleagues with this Java XOR magic!

Checking if a Number is a Power of Two A neat way to check if a number is a power of 2 using XOR is:

boolean isPowerOfTwo(int n) { return (n > 0) && ((n & (n - 1)) == 0); } This works because powers of two have only one bit set in their binary representation.