问题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; }
结果
[[email protected] Desktop]# ./a.out y=2;ret=4 y=3;ret=8 y=4;ret=16 y=5;ret=32 y=6;ret=64 y=7;ret=128 y=8;ret=256 y=9;ret=512 y=10;ret=1024 ====1024 [[email protected] Desktop]#
异或交换两个数;实现pow(int x, int y) ,即x的y次方,布布扣,bubuko.com
时间: 2024-10-11 13:27:26