23. diel - Prevody medzi číselnými sústavami v PHP
V minulej lekcii, Logaritmus a Eulerovo Číslo v PHP , sme si ukázali funkcie pre logaritmus a Eulerovo Číslo v PHP.
Prevody medzi číselnými sústavami sú neoddeliteľnou súčasťou nielen oblasti IT, ale aj bežného života, kde sa stretávame predovšetkým s desiatkovú sústavou čísel. Iste však poznáme aj ďalšie číselnej sústavy, pre ktoré si ukážeme a vysvetlíme funkcie, ktoré nám prevody medzi nimi uľahčí.
decbin()
Funkcia decbin()
prevedie číslo v desiatkovej
(decimal) sústave na číslo dvojkovej (binary) sústavy.
Funkcia prijíma iba jeden parameter, ktorým je naša číslo v desiatkovej
sústave. Návratová hodnota je textový reťazec (string). Rozsah
vstupu závisí od bitovej verzii operačného systému.
Ukážme si príklady:
echo( decbin(32) ); echo "<br>"; echo( decbin(64) );
Prvá hodnota 32
je vyjadrená v binárnej sústave ako
100000
. Každé jednotlivé číslo v binárnej sústave, teda
jednička alebo nula, predstavuje akýsi stav (napr .: 0
->
vypnuté, 1
-> zapnuté) alebo tiež pravdivosť či
nepravdivosť výroku. Tieto binárne hodnoty sa používajú prevažne v
digitálnej technike založenej na logických hradlo. Ak chceme
skontrolovať správnosť prevodu, možno si vyjadriť každú binárnu hodnotu
ako mocninu dvojky, teda budeme postupovať sprava doľava a prvú hodnotu
binárneho čísla vyjadríme ako 2 0. Pokiaľ všetky výsledky
mocnín sčítame, dostaneme vstupnú hodnotu 32
a binárne číslo
sme úspešne previedli späť do desiatkovej sústavy. Druhá hodnota
64
sa po prevode líšia iba o nulu navyše sprava
1000000
, avšak táto nula nesmie byť zanedbaná, jedná sa o
celú mocninu dvojky.
bindec()
Funkcia bindec()
prevedie číslo v dvojkovej sústave na
číslo v desiatkovej sústave. Funkcia prijíma iba jeden parameter, ktorým je
naša číslo v binárnej sústave. Toto binárne číslo však musíme
odovzdať ako textový reťazec, ostatné dátové typy môžu spôsobiť
nečakané výsledky. Návratová hodnota je celé číslo alebo číslo s
plávajúcou desatinnou čiarkou (integer
/ float
).
Vstupné hodnotou tejto funkcie musí byť binárne číslo zapísané ako
textový reťazec (string). Ukážme si príklady:
echo( bindec("00100000") ); echo "<br>"; echo( bindec("01000000") );
Binárne číslo 00100000
vyjadrené v desiatkovej sústave je
32
. Oproti predchádzajúceho príkladu funkcie
decbin()
sme do binárneho čísla zľava pridali nuly, čo prevod
medzi binárne a desiatkovú sústavou vôbec nemenia. Druhé binárne číslo
01000000
je vyjadrené v desiatkovej sústave ako 64
,
opäť nula navyše zľava nič nemení.
dechex()
Funkcia dechex()
prevedie číslo v desiatkovej
(decimal) sústave na číslo hexadecimálne (hexadecimal)
sústavy. Funkcia prijíma iba jeden parameter, ktorým je naša číslo v
desiatkovej sústave. Návratová hodnota je textový reťazec
(string). Vstupné hodnotou tejto funkcie je celé číslo
(integer
). Najväčšie číslo, ktoré môže byť prevedené na
32-bit systému je PHP_INT_MAX * 2 + 1
(alebo -1
).
Ukážme si príklady:
echo( dechex(11) ); echo "<br>"; echo( dechex(26) );
Prvé zadané číslo 11
je prevedené do šestnástkovej
sústavy ako b
. Počet čísel v šestnástkovej sústave, ako už
nám názov sústavy napovedá, je šestnásť. Sú to čísla od
0 až 9
a následne od a do f
. Druhé zadané číslo
26
je prevedené do šestnástkovej sústavy ako
1a
.
hexdec()
Funkcia hexdec()
prevedie číslo v šestnástkovej sústave na
číslo desiatkovej sústavy. Funkcia prijíma iba jeden parameter, ktorým je
naša číslo v šestnástkovej sústave. Návratová hodnota je celé číslo
(Integer). Vstupné hodnotou tejto funkcie musí byť hexadecimálne číslo
zapísané ako textový reťazec (String). Ukážme si príklady:
echo( hexdec("f") ); echo "<br>"; echo( hexdec("ffffffff") );
Hexadecimálne číslo f
je vyjadrené v desiatkovej sústave
ako 15
. Druhé zadané číslo ffffffff
je
maximálna hodnota, ak ho prevedieme do desiatkovej sústavy,
dostaneme maximálnu celé číslo v závislosti na bitovej verzii
systému. Pre 32-bit systém dostaneme na výstup
4294967295
.
decoct()
Funkcia decoct()
prevedie číslo v desiatkovej sústave na
číslo v osmičkovej (Octal) sústave. Desiatková sústava má
hodnoty od 0 do 9, čiže osmičková iba od 0 do 7. Funkcia akceptuje iba jeden
parameter, ktorým je naša číslo v desiatkovej sústave. Návratová hodnota
je textový reťazec (string). Vstupné hodnotou tejto funkcie je celé
číslo (integer
). Ukážme si príklady:
echo( decoct("64") ); echo "<br>"; echo( decoct("128") );
Hodnota 64
v desiatkovej sústave je po presune do osmičkovej
sústavy vyjadrená ako číslo 100
. V osmičkovej, čiže oktálne
sústave, o základe 8
sa vyskytujú cifry 0 až 7
,
presnejšie teda 8 cifier. Ak zadáme do funkcie číslo 128
, sa
presunie do oktálne sústavy a na výstup dostaneme číslo
200
.
octdec()
Funkcia octdec()
prevedie číslo v oktálne sústave na číslo
v desiatkovej sústavy. Funkcia prijíma iba jeden parameter, ktorým je naša
číslo v osmičkovej sústave. Návratová hodnota je celé číslo alebo
číslo s plávajúcou desatinnou čiarkou (float
/
integer
). Vstupné hodnotou tejto funkcie je textový reťazec.
Ukážme si príklady:
echo( octdec("100") ); echo "<br>"; echo( octdec("127") );
Ako už je nám známe, funkcia octdec()
prevádza čísla z
osmičkovej sústavy na čísla v desiatkovej sústave. Prevedieme chcete
číslo 100
v osmičkovej na desiatkovú, dostaneme na výstup
číslo 64
. V druhom príklade je vykonaná totožná operácie a
na výstup dostaneme číslo 87
v desiatkovej sústave.
deg2rad()
Funkcia deg2rad()
prevedie hodnotu v stupňoch
na hodnotu v radiánoch. Funkcia prijíma iba jeden parameter,
ktorým je naša hodnota v stupňoch. Návratová hodnota je číslo s
plávajúcou desatinnou čiarkou (float
). Vstupné hodnotou tejto
funkcie je celé číslo alebo číslo s desatinnou plávajúcou čiarkou.
Ukážme si príklady:
echo( deg2rad("90") ); echo "<br>"; echo( deg2rad("180") );
Funkcia prevedie hodnotu v stupňoch na hodnotu radiánov tak, ako poznáme z
matematiky. Teda ak zadáme do funkcie hodnotu 90
, na výstup
dostaneme približne 1.5708 radiánů
. To isté ak zadáme
napríklad 180°
, na výstup dostaneme približne
3.1416 radiánů
.
rad2deg()
Funkcia rad2deg()
prevedie hodnotu v radiánoch
na hodnotu v stupňoch. Funkcia prijíma iba jeden parameter,
ktorým je naša hodnota v stupňoch. Návratová hodnota je číslo s
plávajúcou desatinnou čiarkou (float
). Vstupné hodnotou tejto
funkcie je celé číslo alebo číslo s desatinnou plávajúcou čiarkou.
Ukážme si príklady:
echo( rad2deg("1.5707963267949") ); echo "<br>"; echo( rad2deg("3.1415926535898") );
Funkcia rad2deg()
nám prevedie zadanú hodnotu v radiánoch na
stupne. V prvom príklade prevádzame hodnotu
1.5707963267949 radiánů
na stupne. Výstupom funkcie bude presne
90°
. Rovnako tak v druhom príklade, kde prevádzame hodnotu
3.1415926535898 radiánů
na stupne. Na výstup dostaneme presne
180°
.
V ďalšej lekcii, Zaokrúhľovania čísel v PHP , si ukážeme funkcie pre zaokrúhľovanie čísel v PHP. Ukážeme si funkcie ako floor (), ceil () či round ().