亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

php如何實現(xiàn)數(shù)值的整數(shù)次方(代碼實例)

來源:轉(zhuǎn)載 發(fā)布時間:2018-11-21 11:48:38 閱讀量:983

本篇文章給大家?guī)淼膬?nèi)容是關(guān)于php如何實現(xiàn)數(shù)值的整數(shù)次方(代碼實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。

給定一個double類型的浮點數(shù)base和int類型的整數(shù)exponent。求base的exponent次方。

思路:

1.指數(shù)的二進(jìn)制表達(dá)10^6次方 可以表示10^110(二進(jìn)制) 10^100 * 10^10 * 10^000=>10^4 * 10^2
2.移位運算

1

2

3

4

5

6

while(n!=0){

    if((n&1)==1)

        res*=curr;

    curr*=curr;// 翻倍

    n>>=1;// 右移一位

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

<?php

function Power($base, $n){

    $res = 1;

        $curr = $base;

    $exponent;

    if($n>0){

        $exponent = $n;

    }else if($n<0){

        if($base==0) return 0;

        $exponent = -$n;

    }else{// n==0

        return 1;// 0的0次方

    }  

    //$exponent轉(zhuǎn)成二進(jìn)制,有多少位就循環(huán)多少次,curr就執(zhí)行n+1次方,如果當(dāng)前位是1的就結(jié)果相乘

    while($exponent!=0){

        if(($exponent&1)==1)

            $res*=$curr;

        $curr*=$curr;// 翻倍

        //var_dump($curr);

        $exponent>>=1;// 右移一位

    }  

    return $n>=0?$res:(1/$res);//指數(shù)是負(fù)數(shù)的情況

}

 

$a=Power(10,6);

var_dump($a);

~


標(biāo)簽: PHP
分享:
評論:
你還沒有登錄,請先