Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Umwandlung von Dezimalzahl in Binärzahl und Anzeige der führenden Nullen!?!





Frage

Hi an alle Formelexperten, ich benötige mal wieder Nachhilfe in Sachen Formeln. Ich mache aus einer Dezimalzahl eine Binärzahl mit der Formel [b]{=SUMME(GANZZAHL(REST(A2/2^(SPALTE(1:1)-1);2))*10^(SPALTE(1:1)-1))}[/b] In weiteren 16 Zellen zeige ich immer nur eine Zahl der Binärzahl mirt der Formel [b]=TEIL($B$2;16;1)[/b] an. Natürlich ändert sich in der Formel immer die Positionszahl, also anstelle der Zahl 16 steht dann 15, 14, 13 usw. Da nun bei Eingabe von z.B. der Dezimalzal 16000 mir nur 14 Binärzahlen angezeigt werden, da die führenden Nullen nicht angezeigt werden, ich aber die Nullen benötige, brauche ich Eure Hilfe. Wie stelle ich es nun an, dass wenn z.B. die führenden Nullen unterdrückt werden, ich dennoch die Zahl 0 in für die Binärzahl 15 und 16 usw. erhalte? Ich komme einfach nicht drauf. Ich hoffe, Ihr habt mich verstanden und habt eine Lösung. Wenn Ihr mich nicht verstanden habt, dann bitte nachfragen und ich werde versuchen das ganze noch mal anders zu formulieren. Eventuell lade ich dann auf meiner HP mal eben eine Beipsieldatei hoch, damit das ganze verständlicher wird. Danke Euch schon mla im Voraus. MfG, coros [sup]Jeder macht was er will, keiner macht was er soll, aber alle machen mit.[/sup]

Antwort 1 von maus

Hi, coros

ich habe mal probiert. wenn mann das Format auf Text umstellt, bleiben die Nullen vor der 1 erhalten.

maus

Antwort 2 von coros

Hi Maus,

da muss ich Dich entäuschen, wenn ich bei mir die Binärzahl in Text formatiere, erhalte ich keine führenden Nullen.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 3 von KL40

Hallo coros,

mit den Array-Formeln kenne ich mich nicht aus. Ich habe die Aufgabe mal ohne Arrays nachgebastelt und die 16 Ziffern danach durch "verketten" und Multiplikation mit 1 zusammengebastelt.
Die Formatierung ließ sich über Format - Benutzerdefiniert lösen. Hier habe ich 16 Nullen eingegeben und es hat funktioniert.

Gruß
KL40

Antwort 4 von .Nick

Und benutzerdefiniertes Format "0000000000000000"
Sollte gehen !!

mfg

Antwort 5 von coros

Hi an alle, danke Euch für Eure Hilfe,

allerdings geht es mir weniger darum, dass mir die führenden Nullen angezeigt werden, sondern darum, das mir in der Teil-Formel die 0 angezeigt werden. Das läßt sich durch formatieren der Zellen nicht lösen, da die führenden Nullen in der Binärzahl trotzedem fehlen und somit die Teil-Formel ins leere läuft.
ich habe mal zum besseren Verständnis hier eine Beispieldatei hochgeladen.
Danke Euch auf jeden Fall für Eure Hilfe.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 6 von pelle

Hallo Coros,

habe mir mal deine Beispieltabelle angeschaut!

Lösungsvorschlag:
Hilfspalte A einrichten!
A1 Überschrift
A2 16
A3 =LÄNGE(C2)
A4 =A2-A3

C5 =WENN(ISTFEHLER(TEIL($C$2;SUMME(16-$A$4);1));0;TEIL($C$2;SUMME(16-$A$4);1))

Vielleicht hilft es weiter!
Tabelle ist unterwegs!

gruss
pelle

Antwort 7 von rainberg

Hallo Coros,

was hältst du davon

{=TEXT(SUMME(GANZZAHL(REST(A2/2^(SPALTE(1:1)-1);2))*10^(SPALTE(1:1)-1));"0000000000000000")} 


Gruß
Rainer

Antwort 8 von coros

Hallo an alle,

zunächst einmal danke an alle, die mir behilflich waren.

@pelle, danke Dir, dass Du Dir den Abend um die Ohren geschlagen hast mit meinem Problem. Deine Lösung funktioniert super. Den Fehler mit der fehlenden Teilformel für Stelle 11 hatte ich auch schon entdeckt. Das resultierte irgendwie daraus, dass ich anstelle von 16 versehentlich nur 15 Binäreingänge aufgeführt hatte - ist mir bei unserem Gespräch gestern Abend ja noch aufgefallen -. Jetzt aber bitte nicht böse sein, aber ich werde den Lösungsvorschlag von Rainer benutzen, da dieser ohne Hilfsspalte auskommt. Eventuell kann ich das ja irgendwann mal mit einer VBA Lösung, die Du vielleicht benötigst wieder gut machen. ;-)

@reinberg, der Lösungsvorschlag bringt genau das Ergebnis, welches ich benötigte. Ich hatte zwar geschrieben, dass es mir nicht unbedingt darum geht, dass die führenden Nullen in der Binärzahl angezeigt werden, aber dadurch, dass sie mit Deiner Formel angezeigt werden, hatt sich das Problem mit der Anzeige der einzellnen Binärzahlen von alleine gelößt. Auch Dir danke für Deinen Lösungsvorschlag.

So, zum Abschluß noch mal meinen besten Dank an alle.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 9 von pelle

Hallo Coros,

komme bei Gelegenheit auf dein VBA-Angebot zurück!

Weshalb sollte ich dir böse sein?

Der Vorschlag von rainberg ist halt eleganter!

gruss
pelle

Antwort 10 von Knubbel

Hallo coros,

auch wenn ich mich erst jetzt einklinke.

Vorab: Ich finde deine Aufgabenstellung / die Lösungen hier zu, super. Aber, da ich mich mit Array-Funktionen nicht auskenne, kann ich auch keine Hilfestellung geben.

Dennoch eine Anmerkung:
Ich denke, dass die angegebene Formel nicht (bin ins letzte) korrekt ist.

Mit 16 Binärstellen kann man Zahlen von 0 - 65535 darstellen.
Nach deiner (Euren) Formel werden aber nur Zahlen bis 32768 richtig dargestellt.
Mir ist aufgefallen, dass sobald die 16. Stelle (32769) mit einer 1 belegt ist, die 1. Stelle immer "0" bleibt, also nur jede 2. Zahl hochgezählt wird. Das kann es doch nicht sein!

Vielleicht ist das ja nur ein "Schönheitsfehler". Aber für professionelle Anwendungen sollte zu mindest die obere Gültigkeitsgrenze abgefragt werden.

Wie bereits oben angemerkt, ich kann nicht sagen, wo die Array-Formel verbessert werden muss.

mfg Knubbel

Antwort 11 von coros

Hi knuddel,

das ist richtig. Danke für den Tip, allerdings reicht die obige Formel bei mir aus, da ich nur Dezimalzahlen bis 32768 erhalte. Wenn die Zahl größer wäre, dann müsste die Formel folgendermaßen lauten:

{=RECHTS(SUMME(GANZZAHL(REST(A2/2^(ZEILE(16:30)-1);2))*10^(ZEILE(1:15)-1))&TEXT(SUMME(GANZZAHL(REST(A2/2^(ZEILE(1:15)-1);2))*10^(ZEILE(1:15)-1));WIEDERHOLEN("0";15));GANZZAHL(LN(A2)/LN(2))+1)}

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 12 von Knubbel

Hi coros,

danke für die schnelle Antwort. Aber dadurch, dass die Formel noch komplizierter wurde, kann ich sie auch nicht besser interpretieren. Macht aber nichts, Ich brauche diese Anwendung so wie so nicht.

Dennoch nehme ich die Formel (jetzt ungetestet) in meine Formelsammlung auf.

Nochmals danke und
mfg Knubbel

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: