Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0553: Umrechnung von Dezimal zu Binär und umgekehrt

 von 

Beschreibung 

Dies ist die Erweiterung von Tipp 292.
Dieser Tipp enthält ein Umrechnungsverfahren, mit dem man von Binär in Dezimal-Zahlen und umgekehrt umrechnen kann. Zudem wird das theoretische Prinzip dieses Umrechnungsverfahren erklärt.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,66 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'--- Anfang Projektdatei umrechnung dezimal und binear.vbp  ---
'--- Anfang Formular "Form1" alias umrechnung dezimal und binaier.frm ---
' Steuerelement: Schaltfläche "Command2"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text2"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"
'
'Autor: Strubel
'
'Kommentare, Überarbeitung und Erklärung
'des Umrechnungsverfahrens: Thomas Rodemer (Thomas@ActiveVB.de)

Option Explicit


' Erklärung des Umrechnungsverfahrens
' ===================================
' Um aus einem Binär Wert eine Zahl zu errechnen geht man wie folgt vor:
' Man nummeriert alle Stellen beginnend mit dem niederwertigsten Bit (das
' ganz rechts steht) das den Stellenwert 0 hat bis nach ganz links zum
' höchstwertigsten.
' Danach werden alle Stellen an denen eine 1 steht durch 2^Stellenwert
' ersetzt.
' Abschließend werden alle Werte miteinander addiert.
'
' Bsp:
' Binärwert:                 1 0 0 1 0 1 0 1
'
' Stellen nummerieren:       7 6 5 4 3 2 1 0
'
' Alle "1" heraussuchen      V     V   V   V
' 2^stellenwert ergibt      128   16   4   1
'                           -----------------
' Alles Addieren:               ==>  149



Private Function Bin2Dec(ByVal Bin As String) As Long
' Von Binaer nach Dezimal umrechnen
Dim i As Long, lngLen As Long
lngLen = Len(Bin)                   ' Länge der Binärzahl
For i = lngLen To 1 Step -1         ' Für jede Stelle die Schleife durchgehen
     Bin2Dec = Bin2Dec + IIf(Mid$(Bin, i, 1) = "1", 2 ^ (lngLen - i), 0)
                                    ' umrechnen in Dezimal (siehe Erklärung oben)
Next i
End Function
 
Private Function Dec2Bin(ByVal Dec As Long) As String
' Von Dezimal in Binaer
Dim Rest As Long
Do
      Rest = Dec Mod 2              ' Den Rest bei einer Division durch 2 errechnen
      Dec2Bin = Rest & Dec2Bin      ' Rest und bishereige Binaer Zahl zusammentun
      Dec = Dec \ 2                 ' Dezimal Zahl durch 2 Teilen
Loop Until Dec = 0                  ' Solange bis Dezimal-Zahl = 0 ist
End Function
Private Sub Command1_Click()
Text2.Text = Bin2Dec(Text1.Text)    ' Aufruf der Funktion Binaer zu Dezimal
End Sub

Private Sub Command2_Click()
Text1.Text = Dec2Bin(Val(Text2.Text)) ' Aufruf der Funktion Dezimal zu Binaer
End Sub

'--- Ende Formular "Form1" alias umrechnung dezimal und binaier.frm ---
'--- Ende Projektdatei umrechnung dezimal und binear.vbp  ---

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 9 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von jesse stöppke am 19.11.2009 um 17:46

was heisst das zeichen 2^ ?

^ ? für was steht das ?

Kommentar von Jäm am 09.08.2007 um 15:03

Super das sich jemand die Mühe gemacht hat, den Source Code zu entwickeln und hier frei zugänglich zu präsentieren. Hat mir bei meinem kleinen Funprojekt (den Windows Taschenrechner detailgetreu nachzuprogrammieren) sehr weiter geholfen. Vielen Dank an dieser Stelle.

Liebe Grüße

Kommentar von am 10.01.2007 um 18:06

vielen DANK

Ihr habt mir das Leben echt erleichtert, nun hab ich sogar eine 2 auf dem Zeugnis obwohl ich immernoch nix vom programmieren verstehe :D

Kommentar von David Übler am 23.01.2004 um 14:49

damit gehts von jedem system in ein anderes:


Public Function ZSys(ByVal Inp As Long, ByVal cSys As Long, Optional ByVal iSys As Long = 10) As String
Dim I As Long, Buff As String
If iSys <> 10 Then Inp = ZDez(Inp, iSys)
I = Inp
Do While I > 0
DoEvents
Buff = (I Mod cSys) & Buff
I = Int(I / cSys)
Loop
ZSys = Buff
End Function

Private Function ZDez(ByVal Inp As String, ByVal cSys As Long) As String
Dim I As Long, Buff As Long, Buff2 As String
For I = 1 To Len(Inp)
Buff2 = (Mid(Inp, I, 1) * (cSys ^ (Len(Inp) - I)))
Buff = Buff + Buff2
Next I
ZDez = Buff
End Function

Kommentar von Anonym am 05.11.2003 um 18:24

Nimm den Rechner von Windows...

Wissenschaftliche Ansicht und klickst dann auf bin. Nun gibst du 10000 ein und klickst anschliessend auf dec...

FERTIG :D

Kommentar von angela am 05.11.2003 um 13:00

ich brächte dringend 10000( in binärer schreibweise) umgerechnet.
ich weiss leider nciht wie das funktioniert, könntet ihr mir bitte weiterhelfen?

Kommentar von Bollero am 28.09.2003 um 13:47

STARK!!

Kommentar von anonym am 23.08.2003 um 16:16

sehr hilfreich. Danke!

Kommentar von Anonym am 02.05.2003 um 15:34

Ihr habt meine Abschlussarbeit gerettet. Da ich mit VB noch nicht so den Durchblick habe und noch in die Grundschule gehe, war das umrechen der Binären zahlen ins Dezimale system für mich unmöglich. Nun hab ich eine Superlösung gefunden.
BESTEN DANK