Mit Binärzahlen arbeiten

Binärzahlen – da arbeiten doch nur Computer mit, oder auch mit Hexadezimalzahlen! Das ist doch uninteressant für mich! Mitnichten: Einige Grundkenntnisse im Bereich des Umgangs mit Binärzahlen haben noch keinem geschadet. Schon gar nicht, wenn man mit Access arbeitet und mit VBA programmiert. Dort ergibt sich doch das eine oder andere Mal Gelegenheit, mit einfachen Funktionen größere Probleme zu lösen – oder die Rechenoperationen wie die logische Konjunktion oder Disjunktion einzusetzen. Dieser Artikel liefert die wichtigsten Grundlagen zu diesem Thema.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1703_Binaerzahlen.accdb.

Dezimalzahlen und Binärzahlen

Dezimalzahlen stammen aus dem Stellenwertsystem, mit dem wir täglich umgehen – dem Dezimalsystem. Die erste Stelle entspricht dem Einer, die zweite dem Zehner, die dritte dem Hunderter und so weiter. Dementsprechend gibt es für jede Stelle zehn verschiedene Ziffern von 0 bis 9. Anders sieht es beim Dualsystem oder Binärsystem aus. Hier gibt es nur zwei verschiedene Zahlen, nämlich 0 und 1. Die erste Stelle steht wie beim Dezimalsystem für den Einer, aber die zweite erfasst direkt die Zweier, die dritte die Vierer und so weiter. Die Zahl 5 im Dezimalsystem entspricht dann etwa der Zahl 101 im Binärsystem (ein Vierer, kein Zweier, ein Einer).

Konviertieren

Nun kommt es vor, dass Sie Zahlen im Binärsystem erhalten und diese gegebenenfalls in das Dezimalsytem umwandeln wollen oder umgekehrt. Dafür benötigen Sie kleine Funktionen, die Sie sich nicht selbst ausdenken müssen – wir stellen Sie ihnen in den folgenden Abschnitten vor.

Umrechnen von Dezimal zu Binär

Die Funktion zum Umrechnen von dezimalen Zahlen in binäre Zahlen heißt Dec2Bin. Sie erwartet einen Long-Wert und liefert einen String zurück:

Public Function Dec2Bin(lngDecimal As Long) As String
    Dim strBinaer As String
    Do While lngDecimal > 0
        If lngDecimal Mod 2 = 1 Then
            strBinaer = "1" & strBinaer
            lngDecimal = lngDecimal - 1
            lngDecimal = lngDecimal / 2
        Else
            strBinaer = "0" & strBinaer
            lngDecimal = lngDecimal / 2
        End If
    Loop
    Dec2Bin = strBinaer
End Function

Sie können diese Funktion beispielsweise mit den folgenden Aufrufen im Direktbereich des VBA-Editors ausprobieren:

 dec2bin(4096)
1000000000000
 dec2bin(4095)
111111111111

Die Funktion prüft zunächst, ob die übergebene Zahl beim Teilen durch den Wert 2 einen Rest von 1 liefert. Ist dies der Fall, besetzt sie schon einmal die ganz rechte Stelle der Binärzahl mit dem Wert 1. Von der Zahl subtrahiert die Funktion dann den Wert 1, da wir die 1 ja schon in strBinaer abgebildet haben.

Außerdem teilen wir die Zahl durch den Wert 2, sodass wir im folgenden Durchlauf wieder prüfen können, ob die zweite Stelle der Binärzahl belegt werden kann. Dies ist im ersten Teil der If…Then-Bedingung der Fall, der zweite Teil kümmert sich darum, dass beim Teilen durch den Wert 2 kein Rest übrigbleibt. In diesem Fall wird der Wert 0 vorn an die Binärzahl in strBinaer angehängt. Auf diese Weise durchläuft die Funktion alle Zweierpotenzen, trägt entweder 1 oder 0 vorn in strBinaer ein und teilt die Zahl nochmals, nachdem gegebenenfalls der Wert 1 subtrahiert wurde.

Wenn Sie die Funktion einmal im Debugging-Modus für einfache Werte wie 1, 2 oder 3 durchlaufen, wird der Ablauf deutlicher.

Umrechnen von binär zu dezimal

Die folgende Funktion namens Bin2Dec wandelt eine als Variant übergebene Binärzahl in eine Dezimalzahl um:

Public Function Bin2Dec(varBinaer As Variant) As Long
    Dim lngDecimal As Long
    Dim intPos As Integer
    Dim bytVal As Byte
    Dim i As Integer
    For i = Len(varBinaer) To 1 Step -1
        bytVal = Mid(varBinaer, i, 1)
        lngDecimal = lngDecimal + bytVal * 2 ^ intPos
        intPos = intPos + 1
    Next i
    Bin2Dec = lngDecimal
End Function

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar