您的位置:首页 > 其它

写一个宏可以将一个数字的奇数位和偶数位交换。

2017-12-05 15:49 211 查看


#include<stdio.h>
#include<windows.h>
#define EXCHANGE_JO(x) ((((x)&0xAAAAAAAA)>>1)|(((x)&0x55555555)<<1))
//(x)&0xAAAAAAAA)>>1 奇数位清零右移一位,将偶数位移至奇数位
//(x)&0x55555555)<<1 偶数位清零左移一位,将奇数位移至偶数位
//所得到的两个数字按位或(|)得到奇数位和偶数位交换后的数字
int main()
{
int x = 5;
int i = 31;
printf("请输入:>");
scanf("%d", &x);
printf("原二进制码为:>    ");
for (i=31; i >= 0; i--)
{
if (0 == (i + 1) % 8)
{
printf(" ");
}
printf("%d", (x >> i)&1);
}
printf("\n");
x = EXCHANGE_JO(x);
printf("交换后二进制码为:>");
for (i=31; i >= 0; i--)
{
if (0 == (i + 1) % 8)
{
printf(" ");
}
printf("%d", (x >> i) & 1);
}
printf("\n");
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐