读书人

一个关于位操作的有关问题

发布时间: 2013-02-19 11:11:40 作者: rapoo

一个关于位操作的问题
大家好,有个问题想请教下,如果一个二进制数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;
}

读书人网 >C语言

热点推荐