Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: BIN2DEC mit langen Zahlen (groesser 10 Bit)

BIN2DEC mit langen Zahlen (groesser 10 Bit)
17.11.2004 04:30:43
Rascal
Moechte eine 22 oder gar 36 Bit lange Binaerzahl nach Decimal umwandeln, aber Excel kann mit so grossen Zahlen nicht umgehen (nur max. 10 Bit).
Weiss jemand eine Loesung, wenn noetig ueber eine mathematischen Funktion?
Beispiel:
Zelle A1: 1000111101001001110001
Zelle A2: =BIN2DEC(A1)
Ergibt z.Zt. #NUM Fehler (#Zahl in Deutsch).
Danke,
Rascal
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
Harald
Hallo Rascal,
am einfachsten wohl mit einer VBA Funktion:

Function MyBin2Dec(x As String) As Long
Dim rest As String
Dim temp As Long
Dim i As Integer
rest = x
temp = 0
For i = 0 To Len(x) - 1
temp = temp + 2 ^ i * Right(rest, 1)
rest = Left(rest, Len(rest) - 1)
Next i
MyBin2Dec = temp
End Function

Gruß Harald
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
17.11.2004 11:57:21
Rascal
Danke, aber gibt es eine Loesung ohne VBA? Hab' da naemlich keine Ahnung von ...
Rascal
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
Harald
Hallo Rascal,
im Prinzip ja, aber...
Ich hab's mal damit versucht, erst mittels TEIL() aus der Binärzahl jeweils 10 Stellen zu extrahieren, diese mittels BIN2DEC umzuwandlen und entsprechend wieder zusammenzusetzen. Das klappt auch, aber es wird schwierig, das so zu gestalten, dass es unabhängig von der Stellenzahl ist. - nicht unmöglich, aber eine Herausforderung -
Um meine Funktion anzuwenden brauchst Du wenig Ahnung von VBA. Öffne einfach den VBA-Editor (Extras &gt Makros &gt Visual Basic Editor) und kopiere die Funktion dort in das sich öffnende Blatt. Das war's schon. Du kannst jetzt den Editor wieder schließen und die Funktion wie eine eingebaute Funktion benutzen.
Gruß Harald
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
18.11.2004 04:22:11
Rascal
Ich hab's mal damit versucht, erst mittels TEIL() aus der Binärzahl jeweils 10 Stellen zu extrahieren, diese mittels BIN2DEC umzuwandlen und entsprechend wieder zusammenzusetzen. Das klappt auch, aber es wird schwierig, das so zu gestalten, dass es unabhängig von der Stellenzahl ist. - nicht unmöglich, aber eine Herausforderung -
Die Stellenanzahl ist fest: Ich zerlege eine 255bit Binaerzahl in mehrere Felder (zwischen 1 und 36 bit), die Anordnung der Felder und die Laenge der Bit in jedem Feld sind festgelegt. Kannst du mir die Formel posten?
Um meine Funktion anzuwenden brauchst Du wenig Ahnung von VBA. Öffne einfach den VBA-Editor (Extras - Makros - Visual Basic Editor) und kopiere die Funktion dort in das sich öffnende Blatt. Das war's schon. Du kannst jetzt den Editor wieder schließen und die Funktion wie eine eingebaute Funktion benutzen.
Hm, ein Blatt hat sich nicht automatisch geoeffnet - habe es aber irgendwie geschaft, die Funktion zu speichern (Excel meldet vorhandenes Makro beim Oeffnen der Datei).
Wenn ich in die Zelle A2 allerdings "=MyBin2Dec(A1)" schreibe, ergibt sich ein #NAME Fehler. Hab ich was vergessen/uebersehen? Oder wird das Makro anders eingefuegt?
Danke schonmal,
Rascal
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
Harald
Hallo Rascal,
bei fester Stellenzahl wird's einfacher. Hier der Ansatz, die Erweiterung auf 255 Binärstellen überlasse ich Dir:
=2^4*bin2dec(TEIL(A1;1;8))+2^3*bin2dec(TEIL(A1;9;8))+2^2*bin2dec(TEIL(A1;17;8))+2^1*bin2dec(TEIL(A1;25;8))+2^0*bin2dec(TEIL(A1;33;8))
Im übrigen wirst Du arge Probleme damit haben, eine 255Bit Binärzahl in Excel überhaupt vernünftig als Dezimalzahl darstellen zu können. Selbst der Datentyp Long mit 64 Bit reicht dazu nicht aus.
Gruß Harald
Anzeige
AW: BIN2DEC mit langen Zahlen (groesser 10 Bit)
18.11.2004 10:37:46
Rascal
Hi,
danke, aber ich glaube, deine Formel stimmt nicht so ganz. Jedenfalls stimmen die Ergebnisse nicht und "streiken" schon bei 14 bit. ;-)
Aber ich habe es aber aufgrund deines Vorschlages geschafft, das Problem dennoch zu loesen (ueber Umwege sowie mit ein wenig Ausprobieren und viel Nachdenken):
Fuer 22bit:
A1=1000111101001001110001
A2=MID(A1,1,8)
A3=MID(A1,9,8)
A4=MID(A1,17,8)
B2=16384*BIN2DEC(A2)
B3=64*BIN2DEC(A3)
B4=BIN2DEC(A4)
B5=SUM(B2:B4)
Fuer 24bit:
A1=000010101111101110111010
A2=MID(A1,1,8)
A3=MID(A1,9,8)
A4=MID(A1,17,8)
B2=65536*BIN2DEC(A2)
B3=256*BIN2DEC(A3)
B4=BIN2DEC(A4)
B5=SUM(B2:B4)
usw.
Wie man erkennt, verdoppelt sich der Multiplikator fuer jedes zusaetzliche Bit.
Uebrigens wollte ich nicht die ganzen 255 bit nach DEC umwandeln, nur die einzelnen Felder mit Laengen zwischen 1 und max. 36 bit. In der Zahl verstecken sich uebrigen GPS Koordinaten, wobei die Felder Datum, Zeit, Geschwindigkeit usw. festlegen. Die Anordung (Sequenz) der Felder und Anzahl der Bit (pro Feld) ist aber gluecklicherweise festgelegt.
Vielen Dank jedenfalls,
Rascal :)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Umwandlung von langen Binärzahlen in Dezimalzahlen in Excel


Schritt-für-Schritt-Anleitung

Um eine lange Binärzahl (z.B. größer als 10 Bit) in eine Dezimalzahl umzuwandeln, kannst Du die folgende Methode verwenden:

  1. Zelle A1: Gib die Binärzahl ein (z.B. 1000111101001001110001).

  2. Zelle A2: Verwende die Formel, um die Binärzahl in Dezimal umzuwandeln:

    =2^4*BIN2DEC(MID(A1;1;8)) + 2^3*BIN2DEC(MID(A1;9;8)) + 2^2*BIN2DEC(MID(A1;17;8)) + 2^1*BIN2DEC(MID(A1;25;8)) + 2^0*BIN2DEC(MID(A1;33;8))

    (Diese Formel ist für eine 36-Bit-Zahl anpassbar, indem Du die Teile entsprechend extrahierst.)

  3. Drücke Enter: Das Ergebnis wird in Zelle A2 angezeigt.


Häufige Fehler und Lösungen

  • #NUM Fehler: Dies passiert, wenn die Binärzahl mehr als 10 Bit oder nicht im richtigen Format eingegeben wurde. Stelle sicher, dass Du die korrekten Formate verwendest.
  • #NAME Fehler: Wenn Du eine VBA-Funktion benutzt, stelle sicher, dass Du den VBA-Editor korrekt geöffnet und die Funktion richtig eingegeben hast.
  • Falsche Ergebnisse: Überprüfe, ob die Multiplikatoren (z.B. 2^n) richtig eingestellt sind für die Anzahl der Bits.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch die Excel-Funktion BIN2DEC für kleinere Zahlen (bis 10 Bit) nutzen und die Binärzahlen in kleinere Segmente aufteilen, um sie dann zusammenzusetzen.

  • Zellen aufteilen: Teile eine lange Binärzahl in Segmente von 8 oder 10 Bit auf und wende BIN2DEC auf jedes Segment an.
  • Kombination: Multipliziere jedes Ergebnis mit der entsprechenden Potenz von 2, um die Gesamtsumme zu erhalten.

Praktische Beispiele

Hier sind einige Beispiele für die Umwandlung:

  1. 22-Bit Zahl:

    • A1: 1000111101001001110001
    • A2:
      =16384*BIN2DEC(MID(A1;1;8)) + 64*BIN2DEC(MID(A1;9;8)) + BIN2DEC(MID(A1;17;8))
  2. 24-Bit Zahl:

    • A1: 000010101111101110111010
    • A2:
      =65536*BIN2DEC(MID(A1;1;8)) + 256*BIN2DEC(MID(A1;9;8)) + BIN2DEC(MID(A1;17;8))

Tipps für Profis

  • VBA-Funktion: Wenn Du mit langen Binärzahlen regelmäßig arbeitest, erstelle eine benutzerdefinierte VBA-Funktion wie MyBin2Dec, um die Umwandlung zu automatisieren.
  • Performance: Bei großen Zahlen (z.B. 255 Bit) ist es ratsam, die Berechnung in kleinere Teile zu zerlegen und die Ergebnisse zu summieren, um die Performance zu verbessern.
  • Fehlermeldungen vermeiden: Achte darauf, dass die Eingaben korrekt sind, und nutze Fehlerüberprüfungen in Deinen Formeln.

FAQ: Häufige Fragen

1. Kann ich eine 255-Bit Binärzahl in Excel umwandeln? Ja, aber die Darstellung als Dezimalzahl kann Probleme verursachen, da der Datentyp Long nur 64 Bit unterstützt. Du musst die Zahl in kleinere Segmente aufteilen.

2. Gibt es eine Möglichkeit, die Umwandlung ohne VBA zu machen? Ja, Du kannst die MID und BIN2DEC Funktionen verwenden, um die Binärzahlen in kleinere Teile zu zerlegen und sie dann zusammenzusetzen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige