Carry einer signed-Addition? Wie?

Gast #1743443
Lesenswert?
• ▲
▼
Hallo Forum,
ich stehe mal wieder vor einem kleinen Problem:
Ich möchte bei einer Addition das Carry-Bit speichern. Nun habe ich 
gedacht, dass ich doch eigentlich sowas wie
signed(resize(a, länge + 1)) + signed(resize(a, länge + 1)) mache und 
mir das neue MSB der Addition nehme (als Carry), aber leider meckert der 
Compiler immer, dass ich das nicht machen darf.

Mir fällt nun leider keine andere einfache Lösung ein?

Muss ich dazu wirklich selbst einen Addierer bauen?


Für Anregungen bin ich dankbar!

MfG Rene
Gast #1743464
Lesenswert?
• ▲
▼
In meinem obigen Beispiel
signed(resize(a, länge + 1)) + signed(resize(a, länge + 1))

muss es natürlich
signed(resize(a, länge + 1)) + signed(resize(b, länge + 1))
heißen.

Uwe Bonnes schrieb:
> Berechne ein Bit mehr als gebraucht, und wenn die beiden obersten Bits
> gleich sind, hats Du einen Ueberlauf.

Hm, ich steh wohl auf dem Schlauch g
Ich habe über mein Beispiel ja versucht, das die ganze Berechnung mit 
einem Bit mehr durchgeführt wird, aber dann müsste es ja auch reichen, 
wenn ich mir das oberste Bit des Ergebnisses der Addition anschaue?

Davon abgesehen:
Ich kann wohl leider nicht mit
(signed(resize(a, länge + 1)) + signed(resize(b, länge + 1)))(MSB)
nur auf den höchsten Index zugreifen :-(
Moderator (Firma: Titel) Persönliche Seite #1743975
Lesenswert?
• ▲
▼
> Ich möchte bei einer Addition das Carry-Bit speichern.
Bei einer signed Addition gibt es kein Carry-Bit im eigentlichen Sinn.

> signed(resize(a, länge + 1)) + signed(resize(a, länge + 1)) mache und
> mir das neue MSB der Addition nehme (als Carry)
Das MSB ist das Vorzeichen  :-o

Was willst du denn eigentlich wirklich?
Du willst irgendwas berechnen und meinst, im MSB steckt relevante 
Information?

> Ich kann wohl leider nicht mit
> (signed(resize(a, länge + 1)) + signed(resize(b, länge + 1)))(MSB)
> nur auf den höchsten Index zugreifen :-(
Da wird wohl ein Umweg über ein Hilfssignal nötig sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren