首页 > 代码库 > 异或交换两个数;实现pow(int x, int y) ,即x的y次方

异或交换两个数;实现pow(int x, int y) ,即x的y次方

问题1:异或交换两个数

假设x=2;y=3,我们的目标是(没有蛀牙!!)交换x,y的值;

利用异或的特殊性:x^x=0

即两个相同数字异或后值为0;

 

解决:

令x=x^y=2^3

令y=x^y=x^y^y=2^3^3=2(此时x=x^y)

令x=x^y=x^y^2=2^3^2=3(此时x=x^y;y=2)

 

问题2:实现pow(int x, int y) ,即x的y次方

x的y次方就是有y个x连续乘机,代码如下:

#include <stdio.h>#include <stdlib.h>int my_pow(int x,int y){        if(x==0) return 0;        int ret=x,i=1;        for(;i<y;i++){            ret=ret*x;            printf("y=%d;ret=%d\n",i+1,ret);        }        return ret;}int main(){  int tmp = my_pow(2,10);  printf("====%d\n",tmp);  return 0;}

结果

[root@admin Desktop]# ./a.outy=2;ret=4y=3;ret=8y=4;ret=16y=5;ret=32y=6;ret=64y=7;ret=128y=8;ret=256y=9;ret=512y=10;ret=1024====1024[root@admin Desktop]#