Swap variablesBit twiddling actions
Swap variables
You might want to swap int
and long
variables. The usual way is to have a temporary variable:
void swap(int a, int b) {
int t=a;a=b;b=t; // 16 bytes
System.out.printf("a=%d, b=%d%n", a, b);
}
But you can shorten it like this:
void swap(int a, int b) {
a^=b^(b=a); // 11 bytes
System.out.printf("a=%d, b=%d%n", a, b);
}
Even if you reuse a temporary variable, it's just shorter to write that code, no matter the length of each variable name.
Does work with short
and byte
but at the cost of casting.
Swap the variables so that the min is in a specific variable and the max is in the other
You have a
and b
and you don't know which is greater. But you want a
to contain the lowest and b
to contain the greatest.
void swapMinMax(int a, int b) {
a^=b<a?b^(b=a):0; // 17 bytes
System.out.printf("a=%d, b=%d%n", a, b);
}