一个关于位操作的问题

T-Quake 2013-02-04 01:07:51
大家好,有个问题想请教下,如果一个二进制数A,想要互换第M和第N位的数,该怎么写啊。。。
...全文
158 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2013-02-04
  • 打赏
  • 举报
回复
[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;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧