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);
}