bitwise XOR (^)

You're doing something else wrong. bitwise xor works fine, I use it often.

This sketch demonstrates that it works:

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  int val1=random(32767);
  int val2=random(32767);
  int difference=val1^val2;
  Serial.print("val1=");
  Serial.println(val1);
  Serial.print("val2=");
  Serial.println(val2);
  Serial.print("difference=");
  Serial.println(difference);
  delay(500);
}