zoukankan      html  css  js  c++  java
  • C语言实现奇偶交换_艾孜尔江撰

    /*
    问: 写一个宏可以将一个数字的奇数位和偶数位交换
    
    分析:
    将一个数字的奇数位提取出来并向左移动1位,偶数位提取出来并向右移动1位,将奇数位与偶数位移位后的值相加即可以实现。
    
    例如:11----->1011
    奇数位提取出来为0001---->向左移动1位为0010
    偶数位提取出来为1010---->向右移动1位为0101
    两个移位后的值相加为0111---->输出的值为7
    
    这样就完成了奇数位和偶数位交换。 
    */
    #include <stdio.h>
    #include <stdlib.h>
    #define SWAP(X) ((((X)&0x55555555)<<1)+(((X)&0xaaaaaaaa)>>1))
      //提取奇数位向左移动1位//提取偶数位向右移动1位
    int main()
    {
        int n = 11;
        int ret = SWAP(n);
        printf("ret = %d
    ", ret);
        system("pause");
        return 0;
    }
    
  • 相关阅读:
    POJ-2393
    POJ-1328
    POJ-2376
    CF-811B
    CF-811A
    CF-816B
    P1111 修复公路
    P2777 [AHOI2016初中组]自行车比赛
    P1889 士兵站队
    P1459 三值的排序 Sorting a Three-Valued Sequence
  • 原文地址:https://www.cnblogs.com/ezhar/p/14883705.html
Copyright © 2011-2022 走看看