交换两个变量之移位交换法
#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位,作为临时存储区,进行变量的交换。作为面试谈资可以掌握下。