Hallo zusammen Habe gerade ein Problem bei der Addition zweier Festkommazahlen: Fixed Point unsigned (4:2): 1101 => 3.25 Fixed Point signed (4,3): 1010 => -0.75 möchte ich miteinander addieren. Da ich aber eine unsigned und eine signed Zahl habe, habe ich bei der Ausführung nun meine lieben Probleme... Kann mir jemand von euch helfen? Gruss Fabian G.
Was genau willst Du wissen? Wenn die 1010 ein 4-bit Signed-Integer in Zweierkomplement-Darstellung ist, komm ich auf -6 (-2^3*sign + 2) bzw. nach Interpretation von zwei Nachkommastellen auf -6/4 = -3/2 = -1.5
Es handelt sich bei beiden um Fix Point Darstellungen. Die Zahlen sind folgendermassen zu interpretieren (Stelle des Kommas) (4,2) 1101 => 11,01 (4,3) 1010 => 1,010 Das Problem hier ist die Addition eines unsigned und eines signed Wertes, beide signed oder beide unsigned wären kein Problem.... muss man zuerst noch umrechnen?
Wenn ich mich nicht irre, musst du beide Zahlen nach signed konvertieren und ins gleiche Format (Länge und Position des Kommas). Aus der ersten wird dann 011(,)010 und aus der zweiten: 111(,)010 addiert ergibt das 010(,)100 also 2,5 was stimmen sollte.
@Fabian Kannst du mal sagen wo du die Notation her hast? Ich kenne z.B dieses Dokument http://home.earthlink.net/~yatescr/fp.pdf Hier wird U für Unsigned und A für Signed verwendet. Mit den Zahlen wird dann die Anzahl der Bits für Ganzzahligen und Fraktuellen Teil Angegeben. Also z.B. U(3,2) bedeutet Unsigned-Integer mit 3 Bits für Integer und 2 Bits für Fraktuellen Teil. Matlab glaube ich nutzt eine S-Notation. s3.2 bedeutet z.B. Signed-Integer, 3 Bits für Integer, 2 Bits für Fraktuellen Teil. Mich würde mal Interessieren ob es da was allgemein gültiges gibt oder wieviele verschiedene Notation es gibt?
>Es handelt sich bei beiden um Fix Point Darstellungen. Die Zahlen sind >folgendermassen zu interpretieren (Stelle des Kommas) > >(4,2) 1101 => 11,01 >(4,3) 1010 => 1,010 Beim Addieren müssen die Kommas untereinander stehen, also musst Du eine Zahl shiften und dann addieren. Die Codierung mit unterschiedlicher Anzahl Nachkommastellen für signed und unsigned finde ich auch seltsam - sollte man so nicht machen. Was passiert wenn Du z.B. beim Inkrementieren von Minus nach Plus kommst? Nach jeder Operation checken, ob plus oder minus und danach Formate umrechnen?
@ ulf Alles schön und gut, das mit der Addition. Aber wie hast du den unsigned Wert in signed umgewandelt? 2er Komplement? Wenn beide signed sind, werden beide Werte negativ, d.h. das Resultat müsste in signed -4 sein... oder liege ich da falsch? Grüsse aus Köln
Ich denke die Annahme ist gerechtfertigt, dass ein unsigned Wert vom Prinzip her immer positiv ist. ulf hat ganz einfach links 1 Bit dazugenommen, damit er den Wertebereich von unsigned in signed ausdrücken kann, ohne das irgendetwas negativ wird. Damit er aber wieder gleich viele Stellen hat, hat auch die signed Zahl links 1 Stelle dazubekommen, die in diesem Fall allerdings 1 sein muss, weil ja die Ausgangszahl auch schon negativ war.
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.