Převod do soustav
1. PrevodDoSoustav
1.3. Výsledný kód
Následující zdrojový kód je kompletací předešlých kódů programu PrevodDoSoustav, který je umístěn v souboru Program.cs - viz Kód 1.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PrevodDoSoustav { class Program { static void Main(string[] args) { /* Deklarace: 'n' ... číslo z desítkové soustavy, které má být převedeno * do vybrané soustavy (dvojkové - binární, šestnáctkové - hexadecimální) */ int n; Console.WriteLine("Převod čísla do soustavy"); // Výzva k zadání čísla Console.Write("Zadejte číslo, které má být převedeno: "); // Načtení konvertovaného čísla int.TryParse(Console.ReadLine(), out n); // Výpis konvertovaného čísla do požadované soustavy Console.WriteLine("Výsledek: " + Prevod(n)); // Čekání na stisk klávesy -> ukončení programu Console.ReadKey(); } /* Metoda s textovým návratem - převod čísla (parametr 'n') z desítkové soustavy * do dvojkové (binární), nebo šestnáctkové (hexadecimální) soustavy */ static string Prevod(int n) { /* Deklarace: 'p' ... počet bitů; 'c' ... zbytek po celočíselném dělení; * 'd' ... dělitel (základ soustavy); 's' ... výstupní text (převedené číslo); * 'i' ... pozice bitu ve výstupním textu; 'soustava' ... index vybrané soustavy */ int p, c, d, i, soustava; string s; // Inicilizace - výstupní text je nastaven na prázdnou hodnotu s = ""; // Validace indexu zvoleného typu soustavy do { // Výzva k výběru typu soustavy Console.Write("Zadejte index soustavy (0 ... dvojková, 1 ... šestnáctková): "); // Načtení indexu zvoleného typu soustavy int.TryParse(Console.ReadLine(), out soustava); } while (soustava < 0 || soustava > 1); // Validace zvoleného počtu bytů do { // Výzva k zadání počtu bytů (počet pozic ve výsledném řetězci) Console.Write("Zadejte počet bytů (1, 2, 4, 8): "); // Načtení počtu bytů - následně bude převeden na bity int.TryParse(Console.ReadLine(), out p); } while (p != 1 && p != 2 && p != 4 && p != 8); // Test, zda byla vybrána dvojková soustava if (soustava == 0) { /* Byla vybrána dvojková (binární) soustava - nastavení hodnoty * počtu bitů v závislosti na počtech bytů (1 byte = 8 bitů v binární soustavě) */ p = p * 8; // Nastavení dělitele na hodnotu 2 d = 2; } else { /* Byla vybrána šestnáctková (hexadecimální) soustava - nastavení hodnoty počtu * bitů v závislosti na počtech bytů (1 byte lze zobrazit na 2 pozice v šestnáctkové * soustavě) */ p = p * 2; // Nastavení dělitele na hodnotu 2 d = 16; } // Cyklus s krokem – pro všechny bity (počet bitů uložen v proměnné 'p') for (i = 1; i <= p; i++) { // Nastavení zbytku = hodnota po celočíselném dělení konvertovaného čísla dělitelem c = n % d; // Test, zda se jedná o konverzi čísla na číslici, nebo čísla na písmeno (podle hodnoty v 'c') if (c < 10) { /* Pokud je zbytek menší než 10 (dvojková soustava) jedná se o konverzi čísla na číslici (znak) * Výstupní text = vložení znaku před stávající text (znak je v ASCII na pozici, která * je rovna hodnotě zbytku + ordinální hodnota znaku '0') */ s = (char)(c + (int)'0') + s; } else { /* Pokud je zbytek větší nebo roven 10 (šestnáctková soustava) jedná se o konverzi čísla * na písmeno (znak) - výstupní text = vložení znaku před stávající text * (znak je v ASCII na pozici, která je rovna hodnotě zbytku - 10 + * ordinální hodnota znaku 'A') */ s = (char)(c - 10 + (int)'A') + s; } // Pokud je bit na násobkem čtvrté pozice ... if (i % 4 == 0) { // Vložení mezery do výstupního textu před stávající text s = " " + s; } // Vstupní číslo = celočíselné dělení stávajícího konvertovaného čísla dělitelem n = n / d; } // Pokud je konvertované číslo větší než nula ... if (n > 0) { // Výstupní text = stávající výstupní text + "přetečení" s = s + " přetečení"; } // Výstupní text je návratem metody return s; } } }
Kód 1: Program PrevodDoSoustav - deklarace hlavní statické metody Main včetně deklarace další metody
Výstup programu
Na následujícím výstupu programu vidíme výpis převedeného čísla 90 do dvojkové soustavy, které je zobrazeno (jakoby uloženo) na 1 B - viz Výstup programu 1 - Kód 1.

Výstup programu 1 - Kód 1: Ukázka výpisu převodu čísla do binární soustavy v hlavní metodě programu PrevodDoSoustav
Pokud bychom číslo 90 chtěli převést do šestnáctkové soustavy, výsledek převodu by vypadal následovně - viz Výstup programu 2 - Kód 1.
Výstup programu 2 - Kód 1: Ukázka výpisu převodu čísla do šestnáctkové soustavy v hlavní metodě programu PrevodDoSoustav
Posledním testovaným případem konverze je přetečení. Jak již z kapitole věnované analýze příkladu víme, do 1 Byte je možné uložit hodnotu 0 ÷ 255. Zkusme tedy vypsat hodnotu 256 na 1 Byte, tj. na 8 pozicích ve dvojkové soustavě, nebo na 2 pozicích v šestnáctkové soustavě - viz Výstup programu 3 - Kód 1.

Výstup programu 3 - Kód 1: Ukázka výpisu přetečení při převodu čísla do dvojkové soustavy v hlavní metodě programu PrevodDoSoustav
Ve výpisu vidíme samé nuly, protože by teprve na 9. pozici byla zapsána číslice (znak) '1'. Hodnota 256 je ve dvojkové soustavě zapsána jako (1 0000 0000)2 a v šestnáctkové soustavě (100)16. Potřebovali bychom tedy minimálně 9 pozic pro výpis tohoto čísla ve dvojkové soustavě, nebo 3 pozice pro výpis v šestnáctkové, tzn. 2 B.