当前位置: 首页 > ai >正文

【C语言】宏经典练习题,交换奇偶位

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

#define Swap(x) x=(((x&0x55555555)<<1)+((x&0xaaaaaaaa)>>1))
int main()
{int a = 10;Swap(a);printf("%d\n", a);return 0;
}

写宏的思路:

假设这个数的二进制是11111111

                         奇数位01010101

只需要对该二进制位进行按位与01010101即可,而01010101的十六进制数为0x55555555再向前移动一位就可变成偶数位

而偶数位同理,将二进制数与10101010进行按位与操作即可,10101010的十六进制数为0xaaaaaaaa再向后移动一位

http://www.xdnf.cn/news/5640.html

相关文章:

  • 直播:怎样用Agentic AI搭建企业AI应用?5.24日,拆解新一代“智能客服系统”案例
  • GitDiagram - GitHub 仓库可视化工具
  • 神经网络初步学习——感知机
  • EnumUtils:你的枚举“变形金刚“——让枚举操作不再手工作业
  • 第六章 Java基础-方法
  • 基于STM32、HAL库的BMP388 气压传感器 驱动程序设计
  • HTTP方法和状态码(Status Code)
  • 在Linux中安装JDK并且搭建Java环境
  • 数据处理专题(十三)
  • 讲讲git 和svn
  • HTML5 定位详解:相对定位、绝对定位和固定定位
  • 155.最小栈
  • 【科研】Visio使用
  • 数据同步DataX任务在线演示
  • 码蹄集——人民币大写数字、全部整除、隐晦余8
  • 嵌入式学习笔记 - MSB, LSB
  • 24 小时 AI 门店管家:重新定义连锁门店智能化管理范式
  • 从模型加密到授权交付,CodeMeter赋能3D打印商业化全流程
  • Ubuntu源码版comfyui的安装
  • 组合问题(多集合)
  • idea中ctrl+/注释,总是出现在最前行
  • 【LeeCode】1.两数之和
  • VsCode相关设置
  • 嵌入式工程师的职业发展路径
  • 《数字人生成工具技术研究与探索》
  • K8S Ingress、IngressController 快速开始
  • 什么是Vim
  • spring中的@Lazy注解详解
  • C++ 迭代器
  • C/C++ 内存管理深度解析:从内存分布到实践应用(malloc和new,free和delete的对比与使用,定位 new )