Forum: Mikrocontroller und Digitale Elektronik 8 bit addition


von TomLtnr (Gast)


Lesenswert?

Guten Abend zusammen,

ich hab eine kurze Frage zu folgender Fragestellung.

Die 8 bit Addition von 0xC2 + 0x3E = 0x100

ist ja grundsätzlich richtig wenn ichs ohne die 8 bit betrachte. Aber 
was passiert wenn ich nur 8 bit habe. Ist das Ergebnis dann einfach 0x00 
und es wird ein Carrybit gesetzt oder ergibt die Rechnung tatsächlich 
0x100 mit einem neu gesetzten 8 bit Block?

Bei 16 und 32 Bit ist das Ergebnis ja dann tatsächlich 0x100.

Wäre echt super wenn ihr mir helfen könntet.

Gruß Tom

von Sven B. (scummos)


Lesenswert?

"kommt drauf an"

Die CPUs haben intern oft ein Overflow-Bit.

In C gibt Addition von unsigned-Werten einfach das Ergebnis modulo 2^n. 
Addition von signed-Werten mit Ergebnis größer als der Wertebereich ist 
undefiniert.

von Joe F. (easylife)


Lesenswert?

TomLtnr schrieb:
> oder ergibt die Rechnung tatsächlich
> 0x100 mit einem neu gesetzten 8 bit Block?

Was ist ein neu gesetzter 8 bit Block?

von (prx) A. K. (prx)


Lesenswert?

TomLtnr schrieb:
> Ist das Ergebnis dann einfach 0x00
> und es wird ein Carrybit gesetzt

In reiner 8-Bit Rechnung ist das so.

von Wolfgang (Gast)


Lesenswert?

TomLtnr schrieb:
> Ist das Ergebnis dann einfach 0x00 und es wird ein Carrybit gesetzt
> oder ergibt die Rechnung tatsächlich 0x100 mit einem neu gesetzten
> 8 bit Block?

Bei einer 8 Bit Addition wird wohl kaum 0x100 rauskommen können, weil 
das 9 Bit sind. Ob und wie du das Carry-Bit auswertest, steht auf einem 
anderen Blatt.

von Jakob (Gast)


Lesenswert?

Gehen wir mal davon aus (weil du 8-Bit-Zahlen addierst),
dass du allen Variablen nur 8 Bit zugewiesen hast:

Jeder µP und µC setzt dabei natürlich ein Carry-Bit.
Aber das Ergebnis im gewählten Register bleibt = NULL.

Woher soll der Compiler, (bei C), oder der Assembler
(bei ASM) nun wissen, dass du plötzlich doch lieber mit
16 Bit, oder mehr rechnen möchtest?

In C wirst du dich bei 8-Bit-Variablen mit dem Ergebnis
zufriedengeben müssen, dass in 8 Bit passt.
Da wird nix neues bereitgestellt - du hättest mit den vorher
gemachten 8-Bit-Definitionen der Variablen auch garkeinen
Zugriff darauf!

Bei ASM könntest du den Mittelwert der Summanden
immerhin noch mit Rechtsrotation bestimmen... ;-)

von TomLtnr (Gast)


Lesenswert?

Dankeschön für die Antworten !

Schönes Wochenende noch

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
Noch kein Account? Hier anmelden.