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

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

我们这里是利用按位与来计算的

我们可以想想怎么保留偶数上的位?我们可以利用0x55555555按位与上这个数就保留了偶数

我们知道,16进制0x55555555转换为二进制就是0x01010101010101010101010101010101

我们知道,二进制每一位,如果这个位是0,按位与1还是0,如果这个数是1,按位与1就是1

然后我们把计算的结果<<1,这样偶数上的位就在奇数位上了

奇数位一样的保留方法,我们可以利用0xaaaaaaaa按位与上这个数保留奇数

16进制0xaaaaaaaa转换为二进制就是0x10101010101010101010101010101010

我们把结果>>1,这样奇数位就在偶数位上了

#define SWAP(num) num = ((num&0x55555555)<<1)+((num&0xaaaaaaaa)>>1)
int main()
{int num = 10;//00000000000000000000000000001010 ->10// 其奇偶位交换后得 ://00000000000000000000000000000101 ->5SWAP(num);printf("%d", num);return 0;
}

http://www.lryc.cn/news/192874.html

相关文章:

  • Zabbix监控系统详解2:基于Proxy分布式实现Web应用监控及Zabbix 高可用集群的搭建
  • docker 安装oracle
  • C++ vector 自定义排序规则(vector<vector<int>>、vector<pair<int,int>>)
  • 机器学习 Q-Learning
  • 产品设计心得体会 优漫动游
  • 前端--CSS
  • 实操指南|如何用 OpenTiny Vue 组件库从 Vue 2 升级到 Vue 3
  • 系统架构设计:15 论软件架构的生命周期
  • 金山wps golang面试题总结
  • 计算机视觉实战--直方图均衡化和自适应直方图均衡化
  • 501. 二叉搜索树中的众数
  • 【Linux】常用命令
  • 机器人制作开源方案 | 齿轮传动轴偏心轮摇杆简易四足
  • Windows中将tomcat以服务的形式安装,然后在服务进行启动管理
  • 解决ERROR: No query specified的错误以及\G 和 \g 的区别
  • mysql中SUBSTRING_INDEX函数用法详解
  • AndroidStudio报错:android.support.v4.app.Fragment
  • 今年这情况,还能不能选计算机了?
  • Elastic Cloud v.s. Zilliz Cloud:性能大比拼
  • 设计模式03———包装器模式 c#
  • 《动手学深度学习 Pytorch版》 8.3 语言模型和数据集
  • Linux桌面环境(桌面系统)
  • 【LeetCode刷题(数据结构)】:二叉树的前序遍历
  • 自定义Flink kafka连接器Decoding和Serialization格式
  • 推荐八个大学搜题软件和学习工具哪个好用且免费,一起对比看看
  • SpringBoot面试题1:什么是SpringBoot?为什么要用SpringBoot?
  • Django Test
  • Linux- 自定义一个ARP请求
  • C++下载器程序:如何使用cpprestsdk库下载www.ebay.com图片
  • java springboot通过EnableConfigurationProperties全局声明bean并处理装配