IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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().


 

Předchozí článek
Kvíz - Goniometrie, Eulerovo číslo a logaritmy v PHP
Všechny články v sekci
PHP funkce
Přeskočit článek
(nedoporučujeme)
Zaokrouhlování čísel v PHP
Článek pro vás napsal Pavel Vaněček
Avatar
Uživatelské hodnocení:
5 hlasů
Autor se věnuje psaní článků na Itnetwork.cz
Aktivity