用宏实现函数—1.写一个宏可以将一个数字的奇数位和偶数位交换 2.求两个数中求较大值
2017-12-11 21:23
417 查看
交换奇数位和偶数位的方法:
1.奇数位与1偶数位与0得到奇数位 num&0101 0101 0101 0101 0101 0101 0101 0101
2.奇数位与0偶数位与1得到偶数位 num&1010 1010 1010 1010 1010 1010 1010 1010
3.奇数位左移一位,偶数位右移一位分别得到交换的奇偶位
4.两者或后得到交换后的数的二进制数
具体代码部分:
效果展示:10和20的较大值是15
1.奇数位与1偶数位与0得到奇数位 num&0101 0101 0101 0101 0101 0101 0101 0101
2.奇数位与0偶数位与1得到偶数位 num&1010 1010 1010 1010 1010 1010 1010 1010
3.奇数位左移一位,偶数位右移一位分别得到交换的奇偶位
4.两者或后得到交换后的数的二进制数
具体代码部分:
#include<stdio.h> #include<windows.h> #define EXCHANGE(num) (((num)&0x55555555)<<1)|(((num)&0xaaaaaaaa)>>1) //0x是十六进制 //奇数位与1偶数位与0得到奇数位 num&0101 0101 0101 0101 0101 0101 0101 0101 //奇数位与0偶数位与1得到偶数位 num&1010 1010 1010 1010 1010 1010 1010 1010 //奇数位左移一位,偶数位右移一位分别得到交换的奇偶位 //两者或后得到交换后的数的二进制数 int main() { int num = 0; scanf_s("%d", &num); printf("交换前:%d\n", num); int num1 = EXCHANGE(num); printf("交换后:%d\n", num1); system("pause"); return 0; }
效果展示:
5的二进制数是0101
交换后10
的二进制数是1010
宏实现两个数的较大值
#include <stdio.h> #include <windows.h> #define MAX(a,b) (a)>(b)?(a):(b) //两个数较大值 条件操作符 int main() { int a = 20; int b = 10; int max = MAX(a, b); printf("max=%d", max); system("pause"); return 0; }
效果展示:10和20的较大值是15
相关文章推荐
- 用宏将一个数字的奇数位和偶数位交换和使用宏实现两个数中求较大值
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 宏定义小程序(写一个宏可以将一个数字的奇数位和偶数位交换)
- 【C】写一个宏将一个数字的奇数位和偶数位交换。实现两个int(32位)整数m和n的二进制表达中,位(bit)不同的个数
- 用宏写一个函数可以将一个数字的奇数位和偶数位互换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换。
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位(二进制)交换。
- //1.调整数组使奇数全部都位于偶数前面。 //题目: //输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。
- 输入一个整型数组,实现一个函数,来调整数组中的数字顺序是的数组中所有的奇数位于数组前半部分,所有偶数位于数组的后半部分。
- 运行时中函数调用黑魔法swizzle,交换两个方法或者改变一个方法的实现
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏可以将一个数字的奇数位和偶数位交换
- 写一个宏将一个数字的奇数位和偶数位交换