Write a function to swap n bits of a variable from position x and position y
Sigiloso
/* EXAMPLE * val = 10110001, n = 2, x = 4, y = 0 * mask = 00000011 * pa = 00001011 & 00000011 = 00000011 * pb = 10110001 & 00000011 = 00000001 * val = 10000000 | 00000011 | 00010000 = 10010011 */ int swap_nbits(int val, unsigned int n, unsigned int x, unsigned int y) { unsigned int mask = 0; // eg. 111 for n=3 for (int i = 0; i > x) & mask; unsigned int pb = (val >> y) & mask; // non-swapped_bits OR swapped_part_a OR swapped_part_b (note shift values swapped) val = (val & ~((mask << x) | (mask << y))) | (pa << y) | (pb << x); return n; }