C - Cambiar un poco entre dos números
Acabo de probar con este código:
void swapBit(unsigned char* numbA, unsigned char* numbB, short bitPosition)//bitPosition 0-x
{
unsigned char oneShift = 1 << bitPosition;
unsigned char bitA = *numbA & oneShift;
unsigned char bitB = *numbB & oneShift;
if (bitA)
*numbB |= bitA;
else
*numbB &= (~bitA ^ oneShift);
if (bitB)
*numbA |= bitB;
else
*numbA &= (~bitB ^ oneShift);
}
intercambiar la posición de bit x de a y b pero debido a if () creo que hay algo mejor.
También cuando veo esto:
*numbB &= (~bitA ^ oneShift);
Realmente creo que hay una manera más fácil de hacerlo. Si tienes algo para mí, lo tomaría :)
Gracias por adelantado