Lekce 24 - Převody mezi číselnými soustavami v PHP
V předchozím kvízu, Kvíz - Goniometrie, Eulerovo číslo a logaritmy v PHP, jsme si ověřili nabyté zkušenosti z předchozích lekcí.
Převody mezi číselnými soustavami jsou nedílnou součástí nejen oboru IT, ale také běžného života, kde se setkáváme především s desítkovou soustavou čísel. Jistě však známe i další číselné soustavy, pro které si ukážeme a vysvětlíme funkce, které nám převody mezi nimi usnadní.
decbin()
Funkce decbin()
převede číslo v desítkové
(decimal) soustavě na číslo dvojkové (binary) soustavy.
Funkce přijímá pouze jeden parametr, kterým je naše číslo v desítkové
soustavě. Návratová hodnota je textový řetězec (string). Rozsah
vstupu závisí na bitové verzi operačního systému. Ukažme
si příklady:
echo( decbin(32) ); echo "<br>"; echo( decbin(64) );
První hodnota 32
je vyjádřena v binární soustavě jako
100000
. Každé jednotlivé číslo v binární soustavě, tedy
jednička nebo nula, představuje jakýsi stav (např.: 0
->
vypnuto, 1
-> zapnuto) nebo také pravdivost či nepravdivost
výroku. Tyto binární hodnoty se používají převážně v digitální
technice založené na logických hradlech. Pokud chceme
zkontrolovat správnost převodu, lze si vyjádřit každou binární hodnotu
jako mocninu dvojky, tedy budeme postupovat zprava doleva a první hodnotu
binárního čísla vyjádříme jako 20. Pokud všechny výsledky
mocnin sečteme, dostaneme vstupní hodnotu 32
a binární číslo
jsme úspěšně převedli zpět do desítkové soustavy. Druhá hodnota
64
se po převodu liší pouze o nulu navíc zprava
1000000
, avšak tato nula nesmí být zanedbána, jedná se o celou
mocninu dvojky.
bindec()
Funkce bindec()
převede číslo ve dvojkové soustavě na
číslo v desítkové soustavě. Funkce přijímá pouze jeden parametr, kterým
je naše číslo v binární soustavě. Toto binární číslo však musíme
předat jako textový řetězec, ostatní datové typy mohou způsobit
nečekané výsledky. Návratová hodnota je celé číslo nebo číslo s
plovoucí desetinnou čárkou (integer
/float
).
Vstupní hodnotou této funkce musí být binární číslo zapsané jako
textový řetězec (string). Ukažme si příklady:
echo( bindec("00100000") ); echo "<br>"; echo( bindec("01000000") );
Binární číslo 00100000
vyjádřené v desítkové soustavě
je 32
. Oproti předchozího příkladu funkce decbin()
jsme do binárního čísla zleva přidali nuly, což převod mezi binární a
desítkovou soustavou vůbec nemění. Druhé binární číslo
01000000
je vyjádřené v desítkové soustavě jako
64
, opět nula navíc zleva nic nemění.
dechex()
Funkce dechex()
převede číslo v desítkové
(decimal) soustavě na číslo šestnáctkové (hexadecimal)
soustavy. Funkce přijímá pouze jeden parametr, kterým je naše číslo v
desítkové soustavě. Návratová hodnota je textový řetězec
(string). Vstupní hodnotou této funkce je celé číslo
(integer
). Největší číslo, které může být převedeno na
32-bit systému je PHP_INT_MAX * 2 + 1
(nebo -1
).
Ukažme si příklady:
echo( dechex(11) ); echo "<br>"; echo( dechex(26) );
První zadané číslo 11
je převedeno do šestnáctkové
soustavy jako b
. Počet čísel v šestnáctkové soustavě, jak
už nám název soustavy napovídá, je šestnáct. Jsou to čísla od
0 až 9
a následně od a do f
. Druhé zadané číslo
26
je převedeno do šestnáctkové soustavy jako
1a
.
hexdec()
Funkce hexdec()
převede číslo v šestnáctkové soustavě na
číslo desítkové soustavy. Funkce přijímá pouze jeden parametr, kterým je
naše číslo v šestnáctkové soustavě. Návratová hodnota je celé číslo
(Integer). Vstupní hodnotou této funkce musí být hexadecimální číslo
zapsané jako textový řetězec (String). Ukažme si příklady:
echo( hexdec("f") ); echo "<br>"; echo( hexdec("ffffffff") );
Hexadecimální číslo f
je vyjádřeno v desítkové soustavě
jako 15
. Druhé zadané číslo ffffffff
je
maximální hodnota, pokud jej převedeme do desítkové
soustavy, dostaneme maximální celé číslo v závislosti na bitové
verzi systému. Pro 32-bit systém dostaneme na výstup
4294967295
.
decoct()
Funkce decoct()
převede číslo v desítkové soustavě na
číslo v osmičkové (octal) soustavě. Desítková soustava má
hodnoty od 0 do 9, čili osmičková pouze od 0 do 7. Funkce přijímá pouze
jeden parametr, kterým je naše číslo v desítkové soustavě. Návratová
hodnota je textový řetězec (string). Vstupní hodnotou této funkce
je celé číslo (integer
). Ukažme si příklady:
echo( decoct("64") ); echo "<br>"; echo( decoct("128") );
Hodnota 64
v desítkové soustavě je po převodu do osmičkové
soustavy vyjádřena jako číslo 100
. V osmičkové, neboli
oktální soustavě, o základu 8
se vyskytují cifry
0 až 7
, přesněji tedy 8 cifer. Zadáme-li do funkce číslo
128
, bude převedeno do oktální soustavy a na výstup dostaneme
číslo 200
.
octdec()
Funkce octdec()
převede číslo v oktální soustavě na
číslo v desítkové soustavy. Funkce přijímá pouze jeden parametr, kterým
je naše číslo v osmičkové soustavě. Návratová hodnota je celé číslo
nebo číslo s plovoucí desetinnou čárkou
(float
/integer
). Vstupní hodnotou této funkce je
textový řetězec. Ukažme si příklady:
echo( octdec("100") ); echo "<br>"; echo( octdec("127") );
Jak již je nám známo, funkce octdec()
převádí čísla z
osmičkové soustavy na čísla v desítkové soustavě. Převedeme-li číslo
100
v osmičkové na desítkovou, dostaneme na výstup číslo
64
. V druhém příkladu je provedena totožná operace a na
výstup dostaneme číslo 87
v desítkové soustavě.
deg2rad()
Funkce deg2rad()
převede hodnotu ve stupních
na hodnotu v radiánech. Funkce přijímá pouze jeden
parametr, kterým je naše hodnota ve stupních. Návratová hodnota je číslo
s plovoucí desetinnou čárkou (float
). Vstupní hodnotou této
funkce je celé číslo nebo číslo s desetinnou plovoucí čárkou. Ukažme si
příklady:
echo( deg2rad("90") ); echo "<br>"; echo( deg2rad("180") );
Funkce převede hodnotu ve stupních na hodnotu radiánů tak, jak známe z
matematiky. Tedy pokud zadáme do funkce hodnotu 90
, na výstup
dostaneme přibližně 1.5708 radiánů
. To samé pokud zadáme
například 180°
, na výstup dostaneme přibližně
3.1416 radiánů
.
rad2deg()
Funkce rad2deg()
převede hodnotu v radiánech
na hodnotu ve stupních. Funkce přijímá pouze jeden
parametr, kterým je naše hodnota ve stupních. Návratová hodnota je číslo
s plovoucí desetinnou čárkou (float
). Vstupní hodnotou této
funkce je celé číslo nebo číslo s desetinnou plovoucí čárkou. Ukažme si
příklady:
echo( rad2deg("1.5707963267949") ); echo "<br>"; echo( rad2deg("3.1415926535898") );
Funkce rad2deg()
nám převede zadanou hodnotu v radiánech na
stupně. V prvním příkladu převádíme hodnotu
1.5707963267949 radiánů
na stupně. Výstupem funkce bude
přesně 90°
. Stejně tak v druhém příkladu, kde převádíme
hodnotu 3.1415926535898 radiánů
na stupně. Na výstup dostaneme
přesně 180°
.
V další lekci, Zaokrouhlování čísel v PHP, si ukážeme funkce pro zaokrouhlování čísel v PHP. Ukážeme si funkce jako floor(), ceil() či round().