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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.