J'utilise la bibliothèque GMP de php pour résoudre un problème de formulaire.Convertir GMP nombre entier à une somme de puissance de deux (2n)
public function gmp_sum($aRessource)
{
// Avec le while
$i = 0;
$nb_ressource = count($aRessource);
while ($i < $nb_ressource)
{
if ($i == 0)
{
$tmp = gmp_init($aRessource[$i]);
}
else
{
$tmp = gmp_add(gmp_init($aRessource[$i]),$tmp);
}
$i++;
}
return $tmp;
}
La variable $ aRessource est égale à: array (1,2,4,8);
donc ma fonction gmp_sum retourne 15.
Je veux créer un algorithme qui fait l'opération inverse, la fonction prend l'entier 15 et me retourne un tableau qui contient 1 2 4 8. Mais je ne savoir par où commencer.
Merci pour l'aide
Solution:
entier Décomposer puissance de 2 en php
public function gmp_reverse($gmp_sum)
{
$res = array();
$i = 1;
while ($i < 64) // 64 bytes
{
$tmp = $gmp_sum & $i; // check if bytes equal to 1
if ($tmp != 0)
{
array_push($res,$i);
}
$i = $i * 2;
}
return $res;
}
Comment voulez-vous diviser 15 à 1 2 4 8 ?? pouvez-vous expliquer la sortie –
@rahulpatel Honnêtement, je ne sais pas exactement moi-même, mais c'est l'inverse de ma fonction –
J'ai édité avec la solution pour décomposer entier à la puissance de 2 somme –