Que ondas masin, mira esta onda no es una funcion si no mas bien un operador de los llamados Operadores de manejo de Bits, estas ondas se utilizan mucho en el campo de la electronica su funcionamiento se basa en lo siguiente, C++ interpreta en forma de bits los dos valores que vos pones entre el operador, pero antes del ejemplo te pondre como opera el operador (valga la redundancia) de forma general:
Si tenemos
0 y 0 el resultado sera -->0
0 y 1 el resultado sera -->1
1 y 0 el resultado sera -->1
1 y 1 el resultado sera -->0
ahora vamos al ejemplo:
7 Equivale a--> 0000 0111
-2 Equivale a--> 1111 1110
-----------------
1111 1001 == -7
Si haces las respectivas operaciones Verticales de las equivalencias de 7 y -2 en bits te dara el resultado y ese resultado lo podes convertir a sistema Decimal y te dara -7 de esa manera funciona, solo decirte tambien que esta onda respeta las regla asociativa ¿Que es esto? como en matematica de 4º grado asi:
si tenes que operar
0 ^ 1 ^ 0 la operacion de 0 con 1 dara 1 y este resultado lo operas con 0 y dara como resultado 1 eso es todo suerte man