www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Addition 16bit Zahlen mit Vorzeichen


Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte/muss in meinem Assemblerprogramm für einen 8bit
Mikrocontroller zwei 16bit Werte mit Vorzeichen addieren. Der
Wertebereich von -32000 bis + 32000 reicht dann völlig aus.

Wie stelle ich aber nun das Vorzeichen geeignet dar
(Zweierkomplement?!? )und wie addiere ich dann richtig?

Würde mich sehr über Hilfe freuen!!

Danke und Gruß,

Peter.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zweierkomplement, klar.
Die Addition selbst ist denkbar einfach:
Operand1 r1,r2
Operand2 r3,r4
Ergebnis r1,r2

add r1,r3  //low
adc r2,r4  //high

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

erstmal danke für die Antwort!

Ich verstehe die Addition leider nicht. wie sehen denn die register
binär aus? ich habe mal versucht mit der angegebenen Addition dezimal
-1 und dezimal +1 zu addieren. Sollte dann ja 0 rauskommen. Da komme
ich aber nicht hin.

Wo steckt der Fehler??

Danke nochmals,

Peter.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
-1 im Zweierkomplement:
1111111111111111
+1 normal:
0000000000000001

Also das seh ich so, dass wenn man die beiden Zahlen addiert, Null am
Ende rauskommen muss.
Hast du nen Plan, wie ne binäre Addition funktioniert?
Wie hast du die Sache versucht?

Gruss, Alex

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alex,

beim Zweierkomplement gibt doch das höchstwertige bit das vorzeichen
an, oder nicht?

-1 wäre demnach:

1000000000000001

+1 klar:

0000000000000001

addiert wie beschrieben kommt da nicht Null raus!

das Einerkomplement wäre 0xFFFF - 1 , also binär:

1111111111111110

die +1 immer noch:

0000000000000001

nach Addition kommt jetzt Null raus! hier würde die angegebene Addition
stimmen.

Soweit mein Kenntnisstand.

Gruß,

Peter.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex Antwort nicht gelesen? Oder nicht verstanden?
-1 als Zweierkomplement:
0b1111111111111111.
am höchsten Bit kann man zwar erkennen, ob es sich um eine positive
oder eine negative Zahl handelt, aber das heisst ja nicht, dass in den
verbleibenden 15bit der Betrag der Zahl steht (könnte man theoretisch
so machen, würde aber die MCs und/oder die Software unnötig
verkomplizieren. Mit Zweierkomplement ist das alles gar kein Ding:
0b1111111111111111 -1
0b0000000000000001  1
------------------
0b0000000000000000

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, dann habe ich das Zweierkomplement nicht verstanden. Die Addition
ist schon klar. Stimmt schon.


Wie ist das Zweierkomplement definiert? Wie bilde ich es?

was ist z.b. dezimal -3 im Zweierkomplement?

Ich bitte nochmals um Hilfe!!

DANKE!!!!

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
logisch: grösste darstellbare Zahl (bei 16bit: 65535) +1 - Betrag der
Zahl
also -3: 65536 -3=65533=0xfffd=0b1111111111111101
falls du es mal in einem Programm machen willst:
alle Bits invertieren und eine 1 addieren.
Praktisch: dich gar nicht drum kümmern und den Assembler/Compiler die
Umrechnung überlassen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.