使用异或运算对交换两个变量的数据

来源:互联网 发布:重庆市网络知识竞赛 编辑:程序博客网 时间:2024/05/17 07:12
#include<stdio.h>int main( ){//利用中间变量进行数据交换//        这种交换方法比较常见,不足是会引入中间变量,    int m=6;    int n=9;    int temp=0;    printf("交换之前:m=%d,n=%d\n",m,n);    temp=m;    m=n;    n=temp;    printf("交换之后:m=%d,n=%d\n",m,n);//利用加减法进行数据交换?//2.可以用两个数求和然后相减的方式进行数据交换,弊端在于如果 x 和 y 的数值过大的话,超出 int 的值会损失精度。    int x =5,y=10; //定义两个变量     printf("交换之前:x=%d,y=%d\n",x,y);        x = x + y;        //x(15) = 5 + 10;        y = x - y;        //y(5) = x(15) - 10;        x = x - y;        //x(10) = x(15) - y(5)    printf("交换之后:x=%d,y=%d\n",x,y);//3.利用异或运算来交换数据//  利用的思想原理是:一个数异或同一个数两次,结果还是那个数,而且不会超出int范围    unsigned int a=60;         //0011 1100    unsigned int b=13;         //0000 1101    printf("交换之前:a=%d,b=%d\n",a,b);   //输出a,b的值    a=a^b;                     //a=a^b=0011 0001    b=a^b;                     //b=a^b=0011 1100    a=a^b;                     //a=a^b=0000 1101    printf("交换之后:a=%d,b=%d\n",a,b);   //输出a,b的值}

结果:

交换之前:m=6,n=9交换之后:m=9,n=6交换之前:x=5,y=10交换之后:x=10,y=5交换之前:a=60,b=13交换之后:a=13,b=60


阅读全文
0 0