IT-Academy Logo
Sign Up Login Help
Home - Programmieren - Visual Basic - VB: Dezimalzahl in Binärzahl umrechnen



VB: Dezimalzahl in Binärzahl umrechnen

In diesem Artikel wird das Problem der Umrechnung von dezimal zu binär analysiert und in eine VB-Funktion implementiert.


Autor: Patrick Bucher (paedubucher)
Datum: 07-11-2004, 19:31:37
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 30958x
Rating: 7.5 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einleitung

Um Zahlen vom dezimalen ins binäre Zahlensystem umzurechnen, kann man sich einfach des Windows Rechners bedienen. Mit der Funktion, die in den nächsten Schritten geschrieben und erklärt wird, geht das ebenfalls.

Wie funktioniert die Umrechnung?

Die Umrechnung einer Dezimalzahl in eine Binäre ist relativ einfach. Ich demonstriere dies anhand eines Beispiels. Das binäre Zahlensystem hat die Basis 2, da jede Stelle nur 2 Zustände annehmen kann. Nun teilt man die dezimale Zahl durch die Basis und schreibt den Rest hin.
125	/	2	=	62,	Rest 1
Als nächstes nimmt man das Resultat der Division (nur ganzzahliger Teil!) und teilt es wieder durch zwei.
62	/	2	=	31,	Rest 0
Man fährt damit so lange weiter, bis keine Division mehr möglich ist. D.h. solange das Resultat größer als 0 ist.
31	/	2	=	15,	Rest 1
15	/	2	=	 7,	Rest 1
 7	/	2	=	 3,	Rest 1
 3	/	2	=	 1,	Rest 1
 2	/	2	=	 0, 	Rest 1
Null kann nicht weiter dividiert werden, der Vorgang ist also abgeschlossen.

Aus einer Division durch 2 kann nur der Rest 0 oder 1 resultieren - aus den Resten kann man nun die binäre Zahl bilden. Dazu liest man die Reste der Divisionen von unten nach oben. Die binäre Zahl lautet in diesem Beispiel 1111101.

Umsetzung

Nun müssen die Erklärungen vom obigen Beispiel in einem Programmcode formuliert werden. Als "Zwischending" eignet sich am besten ein Nassi/Schneidermann Diagramm, welches den Ablauf präzise beschreibt und trotzdem nicht Programmiersprachenabhängig ist.



In der Schleife wird zunächst das Resultat der Division ermittelt. In der zweiten Anweisung wird nun der Rest der Division mit dem Modulo-Operator (%) ermittelt. Die Zahl für den nächsten Schleifendurchlauf ist der ganzzahlige Teil der Division aus der ersten Anweisung. Nun wird ein Ausgabestring mit dem aktuellen Rest verkettet. Die Schleife wird so lange ausgeführt, wie das Resultat größer oder gleich 1 ist. Der Ausgabestring liegt nun noch in der falschen Reihenfolge vor. Zur Erinnerung - man liest die Zahlenfolge von unten nach oben (bzw. von links nach rechts). Der String muss nun noch umgekehrt werden und die binäre Zahl ist korrekt berechnet.

Implementierung

Für die Implementierung der Funktion habe ich Visual Basic 6 verwendet, da ich das Problem mit den wenigsten Codezeilen lösen konnte. Mit dem Nassi/Schneidermann-Diagramm sollte aber eine Implementierung in die meisten Hochsprachen möglich sein.

  1. Der Funktionskopf. Die dezimale Zahl wird als Wert (nicht als Referenz) übergeben
  2. Variable für den Rest
  3. Variable für den ganzzahligen Teil des Ergebnisses der Division
  4. Schleifenkopf der fussgesteuerten Do-Loop Schleife
  5. Das Resultat wird durch die Integerdivision (\) ermittelt
  6. Der Rest wird durch den Modulo-Operatoren ermittelt
  7. Die Zahl für den nächsten Durchlauf ist das bisherige Resultat
  8. Der Ausgabestring wird mit dem ermittelten Rest verkettet
  9. Die Schleife wird solange durchlaufen, wie das Resultat grösser oder gleich 1 ist
  10. Der Rückgabestring wird umgedreht
  11. Ende der Funktion


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0