当前位置: 代码迷 >> C语言 >> 一个关于位操作的有关问题
  详细解决方案

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

热度:5060   发布时间:2013-02-26 00:00:00.0
一个关于位操作的问题
大家好,有个问题想请教下,如果一个二进制数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;
}
  相关解决方案