Le contenu de cet article explique comment PHP réalise la puissance entière des valeurs numériques (exemples de code). J'espère que les amis dans le besoin pourront s'y référer. vous être utile.
Étant donné une base numérique à virgule flottante de type double et un exposant entier de type int. Trouvez la puissance de l'exposant de la base.
Idées :
1. L'expression binaire de l'exposant à la puissance 10^6 peut représenter 10^110 (binaire) 10^100 * 10^10 * 10^000=> ;10^4 * 10^2
2. Opération de décalage
while(n!=0){ if((n&1)==1) res*=curr; curr*=curr;// 翻倍 n>>=1;// 右移一位 }
<?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转成二进制,有多少位就循环多少次,curr就执行n+1次方,如果当前位是1的就结果相乘 while($exponent!=0){ if(($exponent&1)==1) $res*=$curr; $curr*=$curr;// 翻倍 //var_dump($curr); $exponent>>=1;// 右移一位 } return $n>=0?$res:(1/$res);//指数是负数的情况 } $a=Power(10,6); var_dump($a); ~
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!