栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言程序设计 | 交换二进制数奇偶位(宏实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言程序设计 | 交换二进制数奇偶位(宏实现)

  • 题目要求
  • 思路讲解
    • 提取偶数位
    • 提取奇数位
    • 偶数位右移一位
    • 奇数位左移一位
    • 二者相加
  • 代码示例

题目要求

交换奇偶位

写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。

思路讲解

假设我们现在有这么一个二进制数

0是偶数位,那么可以看出红色的就是偶数位

31是奇数位,那么绿色的就是奇数位

我们先把偶数位的提取出来,然后再把红色的提取出来。

然后偶数位右移一位,奇数位左移一位,得出来得两个二进制数相加即使我们所要交换得结果

提取偶数位

提取奇数位

偶数位右移一位

奇数位左移一位

二者相加

代码示例
#define _CRT_SECURE_NO_WARNINGS 1
#define SWAP_BIT(n) (n=((n&0x55555555)<<1)+((n&0xaaaaaaaa)>>1))
#include 
int main()
{
	int num = 0;
	scanf("%d", &num);
	int ret = SWAP_BIT(num);
	printf("%d ", ret);
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1029762.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号