大家好,有个问题想请教下,如果一个二进制数A,想要互换第M和第N位的数,该怎么写啊。。。
------解决方案--------------------------------------------------------
[root@vps616 c]# ./main
n=0x00000050 r=0x00000041
[root@vps616 c]# cat main.c
#include <stdio.h>
int swap_bit(int n, int pos1, int pos2)
{
int bit1 = (n >> pos1) & 1;
int bit2 = (n >> pos2) & 1;
if (bit1 != bit2) {
n ^= 1 << pos1;
n ^= 1 << pos2;
}
return n;
}
int main(int argc, char *const argv[])
{
int n = 0x50;
int r = swap_bit(n, 0, 4);
printf("n=0x%08x r=0x%08x\n", n, r);
return 0;
}