交换两个变量之移位交换法

#include <stdio.h>
//交换变量之移位交换法    
// a 11  b 100
// 11 0000 0000 0000 0000  a = a<<16
//                    100  b
// 11 0000 0000 0000 0100  a = a|b
//                     11  b = a>>16
// 00 1111 1111 1111 1111  0xffff
//                    100  a = a&0xffff
// result: a = 100  b = 11
int main () {
    int a = 3,b = 4;
    a = a<<16;
    a = a|b;
    b = a>>16;  //3
    a = a&0xffff;
    printf("%d,%d",a,b);
    return 0;
}

基于移位操作和位运算操作,交换两个变量,利用32位的高16位和低16位,作为临时存储区,进行变量的交换。作为面试谈资可以掌握下。

原文地址:https://www.cnblogs.com/czsblog/p/11155582.html