C - Troque um pouco entre dois números
Eu apenas tentei com 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);
}
para trocar a posição de bits x de aeb, mas por causa do if () acho que há algo melhor.
Além disso, quando vejo isso:
*numbB &= (~bitA ^ oneShift);
Eu realmente acho que existe uma maneira mais fácil de fazer isso. Se você tem algo para mim, eu aceitaria :)
desde já, obrigado