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
"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.
TomLtnr schrieb: > oder ergibt die Rechnung tatsächlich > 0x100 mit einem neu gesetzten 8 bit Block? Was ist ein neu gesetzter 8 bit Block?
TomLtnr schrieb: > Ist das Ergebnis dann einfach 0x00 > und es wird ein Carrybit gesetzt In reiner 8-Bit Rechnung ist das so.
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.
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... ;-)
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.