用宏实现函数—1.写一个宏可以将一个数字的奇数位和偶数位交换 2.求两个数中求较大值

来源:互联网 发布:淘宝客机器人免费软件 编辑:程序博客网 时间:2024/06/05 16:24
 交换奇数位和偶数位的方法:
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

阅读全文
0 0