Martin Jarmar | blog

Java — Převod dekadického čísla na binární a naopak

Každý, kdo se na škole učil programování, narazil na typickou školní úlohu „Převod dekadického čísla na číslo binární“. Tedy na číslo ve dvojkové soustavě. Určitě si hned vybavíte algoritmus postupného dělení 2 a zapisování zbytků po tomto dělení do výsledného řetězce.

JAVA však nabízí naprosto jednoduchý způsob, jak dosáhnout požadovaného cíle bez znalosti jakéhokoli algoritmu. V podstatě jde o dvě metody, které to podstatné provedou za vás.

Z následujícího okomentovaného kódu by mělo být vše zřejmé. Pozornost věnujte zvýrazněným řádkům. Pro úplnost upozorňuju, že se jedná o výňatek kódu a neuvádím tak deklaraci třídy ani metody.

Scanner sc = new Scanner(System.in);

// Načtení dekadického čísla ze vstupu.
int d = sc.nextInt();

// Vypráznění vstupního bufferu.
sc.nextLine();

// Získání řetězce s dvojkovým rozvojem.
// Pozn. lze použít i Integer.toHexString(int i);
// a Integer.toOctalString(int i); pro základ 16,
// respektive 8.
String binaryStr = Integer.toBinaryString(d);

// Převod binárního řetězce na dekadické číslo.
// Pozn. druhý parametr (zde 2) může být jakýkoli
// základ, např 16 pro hexadecimální čísla.
int n = Integer.parseInt(binaryStr, 2);

Co je ale více důležité, než samotné řešení? Důležité je si zapamatovat, že při programování by se nemělo znovu vymýšlet kolo. Tedy, pokud již někde existuje algoritmus řešící váš problém, použíjte ho. Nemá cenu psát ho celý znovu, jelikož s největší pravděpodobností v něm uděláte chybu, nebo nebude tak efektivní.

Publikováno: 28.3.2010

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

* Zkopírujte heslo | Copy pass

* Vložte heslo sem | Paste here

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>