faecher:informatik:oberstufe:techinf:assembler:zahlen:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:techinf:assembler:zahlen:start [27.09.2021 17:02] sbelfaecher:informatik:oberstufe:techinf:assembler:zahlen:start [05.10.2022 18:38] (aktuell) – [Negative Zahlen - Zweierkomplement] Frank Schiebel
Zeile 34: Zeile 34:
 Ausgeschrieben bedeutet diese Zahl: ''1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 10^1 + 1 *2^0 = 16 + 8 + 4 + 0 + 1 = 29d''  Ausgeschrieben bedeutet diese Zahl: ''1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 10^1 + 1 *2^0 = 16 + 8 + 4 + 0 + 1 = 29d'' 
  
-Mit ''n'' Bit kann man also die (vorzeichenlosen) Zahlen von ''0-2^n-1'' darstellen.+==== Übertrag ==== 
 + 
 +Mit ''n'' Bit kann man also die (vorzeichenlosen) Zahlen von ''0-2^n-1'' darstellen. Überschreitet man diesen Bereich, findet ein **Übertrag** statt - der Przessor setzt das Carry-Flag: 
 + 
 +{{ :faecher:informatik:oberstufe:techinf:assembler:zahlen:auswahl_006.png?nolink |}} 
 + 
 +Addiert man zum Bitmuster von 255 '1', findet ein Übertrag von der Einer auf die Zweierstelle statt, von der Zweier- auf die Vierer u.s.w. da nur 8 Bit zur Verfügung stehen, ist das Ergebnis in 8 Bit nicht '1 0000 0000' (9 Bit) sondern '0000 0000'. Dieser Fehler wird im Carry-Flag festgehalten.  
 + 
 +==== Negative Zahlen - Zweierkomplement ==== 
 + 
 +Negative Zahlen werden im **Zweierkomplement** notiert. Dabei hat das höchstwertige Bit ein negatives Vorzeichen:  
 + 
 + 
 +{{ :faecher:informatik:oberstufe:techinf:assembler:zahlen:2erkompl.png?nolink |}} 
 + 
 +Die Zahl oben steht für ''**-** 1 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = -16 + 8 + 4 + 0 + 1 = -3d''  
 + 
 +Die Zahl unten steht für ''**-** 0 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = -0 + 8 + 4 + 0 + 1 = 13d''  
 + 
 +Eine negative Zahl hat also stets eine 1 an der höchstwertigen Stelle, denn die anderen Stellen können auf keinen Fall den neagtiven Wert ausgleichen: ''1111 1111 = -1d'' 
 + 
 +Zahlen mit der Länge 8 Bit im Zweierkomplement haben also einen Wertebereich von ''-128 ... 127'' 
 + 
 +Die Darstellung im Zweierkomplement führt zu "nahtloser" Addition negativer Zahlen: 
 + 
 +{{ :faecher:informatik:oberstufe:techinf:assembler:zahlen:auswahl_007.png?nolink |}} 
 + 
 +Addiert man zu ''-1'' die Zahl ''1'' ergibt sich korrekterweise ''0'' - man muss lediglich das Carry-Flag ignorieren. Genau so rechnet ein Mikroprozessor. 
 + 
 +==== Überlauf ==== 
 + 
 +Beim Rechnen mit Zahlen in Zweierkomplementdarstellung lauert eine andere Gefahr: Ein Übertrag auf das Vorzeichenbit, 
 +der sog. **Überlauf** ändert nämlich das Vorzeichen der Zahl! Dies passiert allerdings nur, wenn 
 +nicht gleichzeitig auch ein **Übertrag** entsteht und Mikroprozessoren setzen auch nur dann das 
 +Überlaufflag. 
 + 
 +{{ :faecher:informatik:oberstufe:techinf:assembler:zahlen:auswahl_009.png?nolink |}} 
 + 
 +Bei der Addition von ''1'' zu ''127'' findet ein Überlauf auf das Vorzeichenbit statt, man erhält plötzlich ''-128'' als Ergebnis. 
 +==== Zahlenringe für 4Bit-Zahlen ==== 
 + 
 +Unten sieht man eine recht intuitive Darstellung der Situation als "Zahlenring" für 4 Bit lange Binärzahlen. Links vorzeichenlose Zahlen mit dem Übertrag, rechts Zahlen in Zweierkomplementdarstellung mit Überlauf. 
 + 
 +{{ :faecher:informatik:oberstufe:techinf:assembler:zahlen:auswahl_008.png?nolink |}} 
 + 
 +==== Zahl und Gegenzahl im Zweierkomplement ==== 
 + 
 +Wenn man zu einer gegebenen Zahl im Zweierkomplement die Gegenzahl bestimmen möchte, kann man wie folgt vorgehen: 
 + 
 +  * ''1011'' ist ''-8 + 3 = -5d''. Gesucht ist also die Binärdarstellung von ''+5d'' 
 +  * Die invertierte Zahl ist ''0100'' (4d)  
 +  * Die Gegenzahl ist ''0101'' (5d) 
 + 
 +Das klappt immer!  
 + 
 +$$-Z = \overline{Z} +1 $$
  
  
  • faecher/informatik/oberstufe/techinf/assembler/zahlen/start.1632762166.txt.gz
  • Zuletzt geändert: 27.09.2021 17:02
  • von sbel