2015年8月23日 星期日

[C] swap by using bitwise operation

#include <stdio.h>
void swap(int *a,int *b){
    int t ;
    t= *a;
    *a=*b;
    *b=t;
}

void swap1(int *a,int *b){
    printf("a = %d ,b = %d\n",*a,*b);
    *a = *a ^ *b;
    printf("a = %d ,b = %d\n",*a,*b);
    *b = *a ^ *b;
    printf("a = %d ,b = %d\n",*a,*b);
    *a = *a ^ *b;
    printf("a = %d ,b = %d\n",*a,*b);
}

int main()
{
    int a = 2, b = 3;
    printf("%d , %d \n",a,b);
    swap1(&a,&b);
    printf("%d , %d \n",a,b);
}

Result :
2 , 3 
a = 2 ,b = 3
a = 1 ,b = 3
a = 1 ,b = 2
a = 3 ,b = 2
3 , 2 

Reference:

0 意見:

張貼留言