мне нужна помощь.
Мне нужно решить эту проблему перестановки 2 разных битов между 2 разными целыми числами.
Examlpe (бит свопа 3 из (101) с битом 2 из (100))
приведет к (001) & (110)
Моё испытание
void swap(unsigned int numberA, unsigned int numberB, int bitPositionA, int bitPositionB)
{
unsigned int aShift = 1 << bitPositionA, bShift = 1 << bitPositionB;
unsigned int bitA = numberA & aShift;
unsigned int bitB = numberB & bShift;
numberB &= ~bShift; // Set the bit to `0`
numberB |= bitA; // Set to the actual bit value
numberA &= ~aShift; // Set the bit to `0`
numberA |= bitB; // Set to the actual bit value
printf("Number[1] => %d Number => %d",numberA,numberB);
}
Неверный вывод swap(5,4,3,2)
-> Number[1] => 5 Number => 0