MyException - 我的异常网
当前位置:我的异常网» C语言 » 一个关于位操作的有关问题

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

www.MyException.Cn  网友分享于:2013-02-20  浏览:2次
一个关于位操作的问题
大家好,有个问题想请教下,如果一个二进制数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;
}

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有