VB 5/6-Tipp 0553: Umrechnung von Dezimal zu Binär und umgekehrt
von Strubel
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: | Verwendete API-Aufrufe: keine | Download: |
'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-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
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