Hi, ich habe eine Zahl, Bsp. -5.375 Die wandle ich in das IEEE32 Format um, also Ergebnis: 11000000101011000000000000000000 jetzt soll ich das ganze mit C200 000 multiplizieren. Ich nehme an das ich die 11000000... in Hex umwandeln muss und dann mit C200000 multipliziere? bei der Zahl C200 000 steht leider kein Zahlenformat dabei.
Grrrr schrieb: > Mach' Deine Hausaufgaben gefälligst selbst. Ich hab hier nicht gesagt das mir das ganze jemand berechnen soll! Meine Frage war nur ob meine Annahme so stimmt, mehr nicht.
Naja, das ist schwer zu sagen. Zuerst ist C200 000 (oder nicht doch C200 0000?) vermutlich eine Hexadezimalzahl, also z.B. 0xC2000000 und damit nur eine andere Darstellung eines binären Musters. Das wäre nebenbei nicht 11000000..., sondern 0b11000010 00000000 00000000 00000000. Jedwedem Bitmuster, also auch deinem 0b11000010 00000000 00000000 00000000, kann man nicht zuverlässig ansehen, in welchem Format es etwas darstellen soll. Es könnte eine int sein, dann müsste man diese int in eine float nach IEEE754 wandeln und dann multiplizieren. Genausogut kann es bereits eine float sein. Das kann nur aus der Fragestellung hervorgehen, oder man muß raten.
Deine Frage klingt wie die von einem KFZ-Lehrling, der, vor die Aufgabe gestellt einen Vergaser zu wechseln, als erstes fragt ob er einen Kreuzschlitzschraubenzieher nehmen soll oder einen 12er Schlüssel. Beides ist je nach Kontext richtig, d.h. die Frage ist (als erste überhaupt gestellt) mehr oder weniger sinnlos. Auf Dein Problem bezogen, kann die Umwandlung in Hex, je nach dem welchen Weg Du gehst richtig sein oder nicht. Ohne zu wissen, wie Du vorgehst ist das nicht zu beantworten. Deine Mitschriften sollten Dir entweder einen Weg zeigen, oder Du solltest, falls es sich um eine Übertragungsaufgabe handelt, erklären können auf welches Problem Du stösst, wenn Du dem gelernten Weg folgst und warum möglicherweise die Umwandlung in Hex eine Lösung sein könnte und warum Du Dir unsicher bist ob das geht. Angesichts dessen aber, was Du alles NICHT schreibst, kann man Dich entweder nur ignorieren oder so antworten wie ich oder es Dir vormachen. Und dann solltest Du mal klären welche Basis nun Dein Faktor "C20" oder "C2000" oder "C200000" hat. Dann noch viel Erfolg.
Sorry, aber ich kann euch leider nicht mehr geben weil das die Beschreibung der Aufgabe ist. Mal angenommen es ist so, das ich die IEEE32 * C20.... berechnen muss. Kann ich das schriftlich machen? Ich hab noch nie so ne große Hex-Zahl Schriftlich multipliziert, ich geb zu ich hab überhaupt noch nie eine HEx-Zahl multipliziert weil ich es noch nicht gebraucht habe, deshalb die Frage ob man es Schriftlich überhaupt hinbekommt in natürlich nicht allzu langer Zeit ( in der Prüfung muss es ja dann auch gehn).
Michael X. schrieb: > Hi, > ich habe eine Zahl, Bsp. -5.375 > Die wandle ich in das IEEE32 Format um, also Ergebnis: > 11000000101011000000000000000000 Warum umwandeln? Du schreibst die Zahl so hin, wie sie ist und den Rest macht der Compiler
1 | float a = -5.375; |
> jetzt soll ich das ganze mit C200 000 multiplizieren.
Dazu mußt Du wissen, das das bedeuten soll.
In C ist das jedenfalls kein gültiger Ausdruck.
Ist es hex, dann muß es 0xc200000 heißen.
Ist es ein float als hex, dann mußt Du es casten:
1 | uint32_t hexfloatb = 0xc200000; |
2 | float b; |
3 | b = *(float*)&hexfloatb; |
Peter
@Peter Dannegger Ich hätte eher gedacht, dass es ihm um das Zahlenformat http://en.wikipedia.org/wiki/IEEE_754-2008 und die möglichen Operationen damit (von Hand) geht, weniger um C Programmierung.
Hehe, um ein C programm geht es mir nicht :) Vergesst mal kurz meine restlichen Posts. Ich will nur wissen ob es machbar ist in einer gewissen Zeit sagen wir 3-4-5min eine so große Hexzahl zu multiplizieren (hab es selber noch nicht gemacht, kann es daher nicht einschätzen): Das mal als Beispiel: C0A00BEE * C2000000 = kann ich das "per Hand" also schriftlich auf dem Blatt ausrechnen????
> sagen wir 3-4-5min eine so große Hexzahl zu multiplizieren > C0A00BEE * C2000000 > kann ich das "per Hand" also schriftlich auf dem Blatt ausrechnen???? Wenn du in der Lage bist, Dezimalzahllen zu multiplizieren, z.B. 93475434 * 34971234 warum solle dir das nicht auch mit Hexadezimalzahlen gelingen? Beispiel Multiplikation einer Ziffer dezimal: 4 * 4 = 16 = 6 an letzter Stelle plus Übertrag 1 auf vorletzter Stelle geh halt beim hex-Rechnen über den dezimalen Umweg: hexadezimal: 0x7 * 0xA = 0d7 * 0d10 = 0d70 = 0x46 = 6 an letzter Stelle plus 4 Übertrag auf vorletzter Stelle ist halt ein bischen mehr Kopfrechen-Übung. Ein sauberes untereinander schreiben der einzelnen Ziffern ist sowohlö bei dezimaler wie bei hexadezimaler Basis eh vVoraussetzung.
Mh ok, dann muss ich mir das wohl irgendwie beibringen :) Danke für die Meinungen.
Wegstaben Verbuchsler schrieb: > warum solle dir das nicht auch mit Hexadezimalzahlen gelingen? Hex nützt bloß nix, es geht ja um Float! Also erstmal aufteilen in Mantisse, Exponent, Vorzeichen, dann Rechnen, Normieren und wieder zusammen basteln. Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.