P000 Architektura počítačůObsah |
Číslo v soustavě o základu zk (kde z a k jsou přirozená čísla) lze převést do soustavy o základu z jednoduše tak, že každou k-tici číslic nižší soustavy nahradíme číslicí soustavy vyšší.
Jednoduše lze převádět mezi soustavou dvojkovou a osmičkovou nebo mezi dvojkovou a šestnáctkovou; jednoduše nelze převádět např. mezi dvojkovou a desítkovou. Uveďme příklad převodu čísla z dvojkové soustavy do šestnáctkové:
0011 1011 01002 = 3B416
Zpětný převod do dvojkové soustavy probíhá tak, že každou číslici šestnáctkové soustavy převedeme na čtveřici číslic dvojkové soustavy. Nelze-li uplatnit jednoduchý převod, použijeme obecný algoritmus převodu.
/* Algoritmus pro převod celé části desítkového čísla do soustavy z */
integer i := 0 ; /* Řád číslice */
integer Číslo := celé_číslo_bez_znaménka ; /* Převáděné číslo */
byte Základ := z ;
byte Číslice [] ; /* Vektor převedených číslic */
while Číslo 0
begin
Číslice [i] := Číslo MOD Základ ;
Číslo := Číslo DIV Základ ;
i := i + 1 ;
end;
/* V poli Číslice[0] až Číslice[n] jsou uloženy hodnoty číslic v obráceném
pořadí */
/* Algoritmus pro převod necelé části desítkového čísla do soustavy z */
integer i ; /* Řád číslice */
real Číslo := necelá_část_čísla ; /* Převáděné číslo */
byte Základ := z ;
byte Číslice [] ; /* Vektor převedených číslic */
real Součin ; /* Pracovní proměnná */
for i := 1 to požadovaný_počet_číslic
begin
Součin := Číslo * Základ ;
Číslice := TRUNC ( Součin ) ;
Číslo := Součin - Číslice [i] ;
end;
/* V poli Číslice[1] až Číslice[požadovaný_počet_míst] jsou uloženy hodnoty
číslic necelé části výsledného čísla v přímém pořadí */
Následující:
Čís. soustavy v počítačové praxi a převody Obsah |
Michal Brandejs brandejs@informatics.muni.cz