aLeXanDer.. Geschrieben 24. September 2007 Geschrieben 24. September 2007 Hallo Hab erst vor ein paar tagen mit C++ angefangen und steh schon wieder mal vor einem Problem. Ich möchte eine Zahl (hexa) in binär darstellen. z.B ich hab ne char variable mit dem wert Ox55 und diese soll an Binäre Zahl ausgegeben werden. wie mach ich das!?? bitte helfen, und danke Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 z.B ich hab ne char variable mit dem wert Ox55 und diese soll an Binäre Zahl ausgegeben werden. wie mach ich das!?? Genauso wie du es schriftlich machen würdest: Durch Prüfen, welche Zweierpotenzen reinpassen, oder durch Notieren des Rests der wiederholten Division durch 2 und anschließendes Umdrehen. Oder weißt du nicht, wie man das in C++ umsetzen könnte? Wo genau hakt es denn? Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 ja daran liegts, ich weiß nicht wie ich das in C++ umsetzen kann dann hab ich gleich noch ne frage. Warum bringt mein compiler nen fehler wenn ich die variable char nChar = Ox55; definiere?! Hilf mir ma Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 ja daran liegts, ich weiß nicht wie ich das in C++ umsetzen kannWelche Methode verwendest du denn? Und wo genau liegt das Problem? Warum bringt mein compiler nen fehler wenn ich die variable char nChar = Ox55; definiere?!Weil da der Buchstabe O steht. Da muss aber die Ziffer Null hin: 0x55. Tipp für die Zukunft: Immer die genaue Fehlermeldung angeben. Wenn es nicht gerade so ein trivialer Fehler ist wie in diesem Fall, hilft "nen fehler" nicht weiter. Hilf mir ma An deiner Einstellung solltest du auch noch arbeiten Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 jah gibt es keinen befehl in der Sprache C++ denn ich verwenden kann? das wenn ich eine Zahl einsetzte er sie in binärer schreibweiße wiedergibt?! Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 jah gibt es keinen befehl in der Sprache C++ denn ich verwenden kann?Nein, strenggenommen gibt es in C++ gar keine Befehle. Aber das ist semantische Haarspalterei Es gibt viele Möglichkeiten, das zu tun, aber keine, die mit einer einzigen Anweisung auskommt. Daher solltest du nun bitte erst mal klarstellen, welche Methode du verwendest. Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 mhh Methode. Bitoperationen? Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 Bitoperationen?OK. Und wo ist jetzt das konkrete Problem? Kann es sein, dass dir die eigentliche Vorgehensweise (ganz ohne die Umsetzung in C++) gar nicht klar ist? Beschreib doch mal in "Menschensprache", wie du das Problem lösen willst. Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 ich habs jetzt insofern so gelöst, das ich die Zahl 0x55 in dezimalschreibweiße darstellen ließ und diese zahl per hand in binär umgeschrieben bzw. umgerechnet habe. von daher habe ich jetzt meine binäre zahl die ich haben wollte. Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 ich habs jetzt insofern so gelöst, das ich die Zahl 0x55 in dezimalschreibweiße darstellen ließ und diese zahl per hand in binär umgeschrieben bzw. umgerechnet habe.Bist du sicher, dass das Sinn und Zweck der Übung war? Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 nein bin mir nicht sicher ob das der sinn der übung war, aber ich komm nicht dahinter wie man es anders machen kann mit bitoperationen Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 aber ich komm nicht dahinter wie man es anders machen kann mit bitoperationenUnd wenn du dabei jetzt Hilfe möchtest, solltest du anfangen, meine Fragen zu beantworten. Warum kannst du genau das, was du da "von Hand" getan hast, nicht in C++ umsetzen? Nur so am Rande: Für dein Programm ist es egal, ob die Zahl als Hex oder Dezimal in deinem Quellcode steht. Das wäre nur wichtig, wenn du die Zahl als String entgegennehmen müsstest. In einem char (oder short, int, long) steht sowieso nur der Wert, ohne irgendeine Codierung in einem Zahlensystem. Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 weil ich nicht darauf komme Wie ich das in C++ umsetzen soll. Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 weil ich nicht darauf komme Wie ich das in C++ umsetzen soll.Irgendwie drehen wir uns im Kreis. Es bringt nichts, wenn du immer wieder nur sagst, dass du nicht weißt, wie das geht. Du musst dein Problem schon etwas genauer beschreiben. Wenn du zum Arzt und nur sagst: "Mir tut was weh", dann wird er dir auch nicht weiterhelfen können. Schritt 1: Halte deinen Algorithmus schriftlich fest, auf Deutsch (nicht C++). Schritt 2: Setze die einzelnen Teilaufgaben des Algorithmus in C++ um. Bei welchem Schritt kommst du nicht weiter? Falls es Schritt 2 ist: Welche Teilaufgabe ist das Problem? Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 Mhh ich probiers mal Die aufgabe ist es einer char variabele den Wert 0x55 zuzuordnen und die char variabele als binäre zahl(nur 1 und 0) auszugeben.Dazu soll man nur Bitoperationen verwenden. desweiteren soll man bei einer short variable mit dem wert 10 das 1er Komplement bilden. Im Quelltext habe ich dann geschrieben char charVar = 0x55; short shortVar = 10; double result int main () { ? ? ? (<-- in meinem logischen denken ^^, eignet sich keine Bitoperation um eine Variable als eine binäre Zahl auszugeben. Mir sind bekannt die UND , ODER und EXKLUSIV-ODER Operatoren.Entweder steh ich am schlauch oda ich weiß es nicht.) result = ~shortVar; std::cout << result << std::endl; result += 1 std::cout << result; } ich weiß nicht ob ich nun auf deine Frage eingehen konnte. Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 ich weiß nicht ob ich nun auf deine Frage eingehen konnte.Du musst dir zuerst überlegen, wie du vorgehst, bevor du das dann in C++ umsetzen kannst. Hast du den Schritt 1, den ich oben erwähnt habe, überhaupt gemacht? Du kannst Schritt 1 weglassen, wenn es um ein (für dich) triviales Problem geht, aber das ist ja offenbar nicht der Fall. Also führ doch bitte Schritt 1 wirklich mal durch, und zeig das Ergebnis. Das Ergebnis ist übrigens ein Text in deutscher Sprache, kein Code. Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 ich glaub ich steh am schlauch. Also schriftlich festgehalten will ich so vorgehen wie in der aufgabe beschrieben ich definiere char mit dem vorgegebenen wert und möchte dann das dieser wert als eine binäre Zahl im Ausgabe Fenster wiedergegeben wird. Das Problem hierbei ist, dass ich nicht auf die Lösung komme , wie ich es schaffe die variable als binäre zahl darzustellen. ich weiß zwar wie die binäre zahl lauten muss , aber ich kann es im compiler nicht realisieren. Mir fehtl der Lösungsweg. entweder versteh ich net was du meinst und umgekehrt oder ich bin ein hoffnungsloser fall Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 ich definiere char mit dem vorgegebenen wert und möchte dann das dieser wert als eine binäre Zahl im Ausgabe Fenster wiedergegeben wird. Das ist nur die Wiedergabe der Aufgabenstellung. Das Problem hierbei ist, dass ich nicht auf die Lösung komme , wie ich es schaffe die variable als binäre zahl darzustellen. ich weiß zwar wie die binäre zahl lauten muss , aber ich kann es im compiler nicht realisieren.Lass doch erst mal den Compiler weg! Formuliere die Vorgehensweise erst mal auf Deutsch. Code kommt später! Beschreibe das, was du da von Hand gemacht hast. Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 ich habe die Zahl 0x55 in eine dezimale Zahl umgewandelt, jedoch wäre das eigentlich nicht nötig , hast du gemeint. Die Zahl 85 , die das Ergebniss dieser umwandlung ist, habe ich dann durch ständiges teilen druch 2. in eine binäre Zahl umgewandelt. Ergebniss 01010101. tut mir leid wenn ich hier zum Probelmfall werd Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 Die Zahl 85 , die das Ergebniss dieser umwandlung ist, habe ich dann durch ständiges teilen druch 2. in eine binäre Zahl umgewandelt. Genau darauf wollte ich hinaus. Das musst du jetzt noch genauer formulieren. Beschreibe jeden einzelnen Schritt. (Nur am Rande: 85 und 0x55 ist dieselbe Zahl. Aber für Menschen ist es meist einfacher, mit Dezimalzahlen zu arbeiten.) Ergebniss 01010101.Wir brauchen nicht das Ergebnis, wir brauchen die Vorgehensweise. So einfach, dass jeder Depp sie befolgen könnte (denn der Computer ist ein Depp). tut mir leid wenn ich hier zum Probelmfall werdKeine Sorge Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 Vorgehensweise : 85 / 2 = 42 Rest 1 42/ 2 = 21 Rest 0 21/ 2 = 10 Rest 1 10/ 2 = 5 Rest 0 5/ 2 = 2 Rest 1 2/ 2 = 1 Rest 0 1/ 2 = 0 Rest 1 Da man von einer Größe von 8 Bit ausgeht 01010101 richtig so? Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 richtig so?Für diesen konkreten Fall ja. Jetzt beschreib die Vorgehensweise allgemein, so dass man sie auf jeden Wert anwenden kann. Wenn ich einen Wert X habe, wie ermittle ich die Darstellung als Dualzahl? Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 X / 2 = X/2 Rest Z1 X/2 / 2 = X/4 Rest Z2 X/4 / 2 = X/8 Rest Z3 X/8 / 2 = X/16 Rest Z4 X/16 / 2 = X/32 Rest Z5 X/32 / 2 = X/64 Rest Z6 X/64 / 2 = X/128 Rest Z7 aight? Zitieren
Klotzkopp Geschrieben 24. September 2007 Geschrieben 24. September 2007 aight?Das sieht schon gar nicht schlecht aus, auch wenn es mir etwas zu sehr nach Code aussieht. Du kannst das vereinfachen, wenn du X nach jedem Schritt änderst: Notiere den Rest der Division von X/2 Teile X durch 2 Notiere den Rest der Division von X/2 Teile X durch 2 Notiere den Rest der Division von X/2 Teile X durch 2 Notiere den Rest der Division von X/2 Teile X durch 2 usw. Da das jetzt eigentlich nur Wiederholungen derselben Teilschritte sind, kann man sie in einer Schleife zusammenfassen: Solange X nicht 0 ist, notiere den Rest der Division von X/2 und dividiere X danach durch 2. Der Algorithmus hat noch das Problem, dass die Ausgabe in der falschen Reihenfolge ist (die rechte Ziffer wird zuerst notiert), wir müssen das Ergebnis also am Ende noch umdrehen. Aber das machen wir später. Kannst du diese Schleife in C++ umsetzen? Zitieren
aLeXanDer.. Geschrieben 24. September 2007 Autor Geschrieben 24. September 2007 x = 85; X /= 2 Rest=(X%2) X /= 2 Rest=(X%2) X /= 2 Rest=(X%2) . . . ?? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.