Hi Leutz. Ich habe Probleme mit dem 2er-Komplement der Zahl 9A(hex). Ich lese gerade ein Assembler-Buch, in dem es um Konvertierung von 8-Bit Zahlen in 16-Bit geht und vor allem um das Auffüllen des höherwertigen Byte des 16-Bit-Registers. Es gibt folgende Tabelle, die negative und positive Zahlen enthält: 8-Bit 16-Bit 32-Bit 80h FF80h FFFFFF80h 28h 0028h 00000028h 9Ah FF9Ah FFFFFF9Ah 7Fh 007Fh 0000007Fh ––– 1020h 00001020h ––– 8088h FFFF8088h Frage: Wieso wird die Zahl 9A als negative Zahl aufgefasst und das höherwertige Byte im 16-Bit-Register folglich mit "F" aufgefüllt? Eigentlich kann es die Zahl 9A in einem 8-Biter gar nicht geben, wenn man negative Zahlen betrachtet, oder? Kann mir jemand noch vielleicht ankreuzen, welche der Zahlen positiv sind und welche negativ? Danke
Hi! 0x9A ist deshalb negativ, weil das Höchstwertigste Bit gesetzt ist (10011010 = "-26" dezimal). Dieses eine Bit macht den Unterschied zwischen positiven und pegativen Werten bei vorzeichenbehafteten Variablen aus. 0x80 ist demnach "+0" dezimal :-) Gruß, Patrick...
Hallo Patrick 0x80 = -128 und nicht 0. Frag mal deinen Taschenrechner Dezimal -128 eintippen und in hex umwandeln Gruß Gerhard
Danke fuer die schnelle Antwort. Erst einmal etwas zur 0. Da muß ich Gerhard Recht geben, denn laut meiner Rechnug und laut Buch wäre: 80h = 10 00 00 00b = 10 00 00 00(2er-Komplement) mit anderen Worten -(128) = 128 und an dieser Stelle sagt das Buch, muesste eine Exception auftreten, da der maximale Wertebereich mit +128 mit 2hoch7 ueberschritten waere. Somit kann 80h nicht gleich 0d sein?! Wer hat Recht? Ich glaube der Groschen ist bei mir gefallen. Allerdings gibt es noch folgende Unsicherheit: Aus euren Ausfuehrungen geht nun fuer mich hervor, dass die Zahlen in der Tabelle schon das 2er-Komplenent darstellen, dh. ich muß sie nur noch in die binaere Form bringen und dann so wie sie dann da stehen als negative Zahl interpretieren??? 28h = 00101000(2-er Komp) = 40d richtig? Ist dann 9Ah = -102d ? Aber normalerweise, wenn man im Register ein Bitmuster vorfindet, dann kann man doch nicht sagen, ob es sich um eine positive oder negative Zahl handelt. Dass kann man doch nur aus dem Kontext heraus erkennen, oder? Reiko
Hallo Reiko das ist tatsächlich so. Also deine Zahlenbeispiele stimmen. Und ob eine Zahl positiv oder negativ ist (wenn das MSB = 1 ) ist reine Interpretationssache. Genauergesagt muß man korrigierend eingreifen. Ein Mikroprozessor rechnet normal immer nur mit positiven Zahlen. Gruß Gerhard
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.