首页 > 其他 > 详细

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

时间:2014-08-18 21:55:02      阅读:594      评论:0      收藏:0      [点我收藏+]

问题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.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
[root@admin Desktop]# 

 

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

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

原文:http://www.cnblogs.com/McQueen1987/p/3920448.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!