O que o operador ^ faz em Java?

Qual a função que o^ operador (caret) serve em Java?

Quando eu tento isso:

int a = 5^n;

... isso me dá:

para n = 5, retorna 0
para n = 4, retorna 1
para n = 6, retorna 3

... então eu acho que não realiza exponenciação. Mas o que é então?