Umrechnung von Zahlensystemen

Eingestellt: 16.02.2009
Letzte Änderung: 16.02.2009


 

Einleitung

Zur Umwandlung von Zahlensystemen stellt Excel im Add-In Analyse-Funktionen die Arbeitsblattfunktionen DEZINBIN, DEZINOKT, BININDEZ, OKTINDEZ und HEXINDEZ zur Verfügung. Eine Umrechnung kann daher lediglich vom Dezimal- ins Binär- (bzw. Oktal- oder Hexadezimal-)system vice versa erfolgen. Zudem unterliegen einige dieser Excel-Funktionen einer starken Beschränkung bzgl. der Größe der umzuwandelnden Zahl.

In einer Kooperationsarbeit von Maninweb und Excel4Managers entstanden folgende Funktionen, die eine Umrechnung in zahlreiche Zahlensysteme mit natürlicher Basis ermöglichen und einige der Größenrestriktionen schwächer formulieren.

Gerne freuen wir uns über Anregungen, Verbesserungsvorschläge oder einfach nur über eine Rückmeldung.

 

 

 

DEC2X

Die Funktion DEC2X wandelt ausgehend vom Dezimalsystem eine Zahl z in ein Zahlensystem mit natürlicher Basis n um. Während üblicherweise auf eine Subtraktion zur Bestimmung der jeweiligen Restzahl zurückgegriffen wird, geschieht dies hier anhand der Gleichung q, wobei sich die Anzahl der Schleifendurchläufe durch die Gleichung k ergibt. Dieses Verfahren ist äquivalent zu der Subtraktionsmethode.

Function DEC2X(z As Long, n As Long) As String

Dim j As Integer
Dim k As Integer
Dim q As Integer
Dim r As String

If IsNumeric(z) And IsNumeric(n) Then
k = Int(Evaluate(Log(z) / Log(n))) + 1
For j = 1 To k
q = Int(z / n ^ (j - 1)) Mod n
If q > 9 Then
r = Chr(q + 55) & r
Else
r = q & r
End If
Next j
DEC2X = r
Else
DEC2X = "#NV"
End If

End Function

 

X2DEC

Demgegenüber wandelt die Funktion X2DEC von einem Zahlensystem mit natürlicher Basis n eine (alpha-)numerische Zahl z in das Dezimalsystem um.

Function X2DEC(z As String, n As Long) As Long

Dim j As Long
Dim r As Long

If IsNumeric(n) Then
For j = 1 To Len(z)
If Asc(Mid(z, j, 1)) > 64 Then
r = r + n ^ (Len(z) - j) * _
(Asc(Mid(z, j, 1)) - 55)
Else
r = r + n ^ (Len(z) - j) * CLng(Mid(z, j, 1))
End If
Next j
X2DEC = r
Else
X2DEC = "#NV"
End If

End Function

 

Beispielmappe

In dem korrespondierenden Artikel von Maninweb finden Sie zusätzliche Informationen sowie eine Beispielmappe: DE.Zahlensysteme.zip.

 

Haben Sie Fragen oder Anregungen zu diesem Artikel?

Dann senden Sie einfach eine Nachricht an:

E-Mail:

 

Lesen Sie auch:
___________________________________________________________________

Variationen mit Zurücklegen