A questão trabalha o conceito de bitwise, ou seja, operações bit a bit em que se deseja realizar cálculos matemáticos utilizando a representação de máquina, a binária. Na questão, tem-se a operação XOR. Utilizando-se da lógica matemática, faz-se necessário realizar a tabela verdade da disjunção exclusiva, o famoso "OU...OU". Por isso, quando se compara 1(true) com 1(true), tem-se 0(false), já que esse operador não aceita dois verdadeiros, ou seja dois "1(true)". Feito o apanhado teórico, vamos realizar os devidos cálculos:
a = 12 | 1100
b = 5 | 0101
a = a ^ b = 1001 = 9
1100 (12)
0101 (5)
1001 (8+1) Aqui, o novo a é 9
b = a ^ b = 1100 = 12
1001
0101
1100(8+4)
a = a ^ b = 0101 = 5
1001
1100
0101(4+1) Aqui, o novo a é 5
Por fim, temos letra D:
a = 5
b = 12