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