使用宏将数字的二进制奇数位偶数位交换
来源:互联网 发布:杭州淘宝客服招聘 编辑:程序博客网 时间:2024/06/07 12:21
问题:将奇数位和偶数位交换。
思路:将其第0位和第1位交换,第2位和第3位交换,以此类推。
我们将用0x55555555(01010101010101010101010101010101)和X与运算,就能求得X的奇数位,再左移1,就能将奇数位变为偶数位。
同理,用0xAAAAAAAA(10101010101010101010101010101010)和X与运算,就能得到X的偶数位,再右移1,就能将偶数位变为奇数位。
上代码:
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#define CHANGE_ODD_EVEN(x) (((x&0x55555555)<<1)|((x&0xAAAAAAAA)>>1))int main(){int num = 0;int changed_num = 0;int i = 0;int ret = 0;int count = 0;printf("请输入一个数:");scanf("%d",&num);printf("这个数的2进制序列是:\n");for(i=31; i>=0; i--){printf("%d",num>>i&1);}printf("\n");ret = CHANGE_ODD_EVEN(num);printf("奇数偶数位交换后序列是:\n");for(i=31; i>=0; i--){printf("%d",ret>>i&1);}return 0;}结果显示:
0 0
- 使用宏将数字的二进制奇数位偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位(二进制)交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏将一个数字的奇数位和偶数位交换
- 【C语言】写一个宏将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- C语言--宏将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 如何用一个宏将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 宏,将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- UCOS-III 消息队列正确使用方法
- HTML
- 大数据开发初探
- NYOJ—图像有用区域【广搜BFS】
- 网络编程_TCP协议发送和接收数据图解
- 使用宏将数字的二进制奇数位偶数位交换
- DIY专区一、 用摄像头及激光来测距(opencv)
- bzoj 3450: Tyvj1952 Easy
- 一种冒泡排序
- MyBatis操作数据库的两种方式
- 开源 java CMS
- 题目1000:计算a+b
- 关闭SELINUX服务
- 《开发自己的搜索引擎》读书笔记——索引的建立