Si
cuando estas tomando el resto de dividir por 2 estas fijandote en si esta prendido el bit 1, las divisiones por potencias de dos son corrimientos de bits
2 / es 1 >>
4 / es 2 >>
8 / es 3 >>
y el resto es justamente los bits que quitaste.
Por eso preguntar si esta prendido el bit 1
1 and?
es preguntar si un numero es par o no. que es lo que haces!! sin necesidad de un calculo mas.
El reemplazo del - por el xor no tiene tanto impacto como lo anterior, simplemente invierte los bits y queda la misma operacion que la resta.
El compilador hace desaparecer muchas palabras de movimiento de pila, asi que no es necesario preocuparse tanto.