Potęgowanie do najwyższej wartości.

0

Witam.
Piszę kalkulator dec-> hex. Mam pewną zmienną $a i muszę ją podzielić przez potęgi liczby 16. Od najwyższej możliwej poprzez coraz niższe. Jak mam ustalić, która potęga jest najbliższa zmiennej, a jak następnie zjeżdżać coraz niżej ?

EDIT: Poprawiłem błędy, które zostały zaznaczone przez furious programming.

0

Mówisz, że robisz konwerter dec->hex. Nie łatwiej ci będzie skorzystać z gotowej funkcji? http://php.net/manual/en/function.dechex.php

0

A nie możesz:

  1. wziąć resztę z dzielenia $a przez 16 i zapisać jako kolejną cyfrę od końca
  2. podzielić $a przez 16
  3. jeżeli $a nie jest zerem to przejść do punktu 1.
    ?
1

wracając do konkretnego pytania i zakładając że autor chce się czegoś nauczyć

żeby wyznaczyć najwyższą możliwą potęgę wystarczy użyć logarytmu n-tego stopnia, lub korzystając ze wzoru - logarytmu dowolnego stopnia z liczby przez logarytm dowolnego stopnia z podstawy
otrzymaną liczbę wystarczy zaokrąglić w dół, czyli:

$najwyzsza_potega = floor(log($liczba) / log(16));

zapomniałem że php akurat umożliwia podanie podstawy logarytmu - w takim przypadku wystarczy:

$najwyzsza = floor(log($a, 16));

poprzedni kod jest dobry dla innych języków programowania z których nie wszystkie mają funkcje do liczenia logarytmu o dowolnej podstawie

oczywiście w tym konkretnym przypadku jeszcze lepiej użyć po prostu funkcji dechex ;)

połączenie postów - furious programming

0

Stworzyłem już to potęgowanie do najwyższej możliwej potęgi mniejsze od wpisanej.

 $x=$oblicz;
$y = 1;


while($y<$x){
$y *=16; 
 }
$y/=16;

1 użytkowników online, w tym zalogowanych: 0, gości: 1