#include <stdio.h>
void print_bits(unsigned int n, int size) {
for (unsigned int i = 1 << (size - 1); i > 0; i = i / 2) {
(n & i) ? printf("1") : printf("0");
}
}
int swap_bits(int num, int pos1, int pos2) {
if (( (num & (1 << pos1)) >> pos1) ^ ( (num & (1 << pos2)) >> pos2)) {
num ^= (1 << pos1);
num ^= (1 << pos2);
}
return num;
}
int main()
{
unsigned int number = 41337; // // 0000000000000000101000010-1-111-0-01
int pos1 = 2;
int pos2 = 6;
print_bits(number, 32);
printf("\n");
unsigned int swaped_bits = swap_bits(number, pos1, pos2);
print_bits(swaped_bits, 32);
return 0;
}
/*
run:
00000000000000001010000101111001
00000000000000001010000100111101
*/