Ingenieurinformatik WS05/06 Zahlensysteme Inhalt: 1 Dualsystem ____________________________________________________________ 1 1.1 2 Dualzahlen mit Vorzeichen_____________________________________________ 4 Hexadezimalsystem______________________________________________________ 8 2.1 Hexadezimalzahlen mit Vorzeichen_____________________________________ 10 3 Oktalsystem ___________________________________________________________ 13 4 Zahlenring ___________________________________________________________ 14 Definition: Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird. In der Informatik spricht man auch von Stellenwertsystem, d.h. einem System zur Darstellung von Zahlen durch Ziffern, bei denen der Wert einer Ziffer von der Stelle abhängt, an welcher sie innerhalb der Zahl geschrieben ist. Beispiel: Dezimalsystem (mit der Basis 10) 1 3 1000 100 103 102 Zerlegung nach Potenzen der Basis 10: 3 10 101 3 1 100 Wertigkeit der Stellen 1*1000+ 3*100 + 3*10 +3*1 =1333 1 Dualsystem Das Dualsystem (auch Binärsystem genannt) ist die Basis der heutigen Computer, da die elementaren Schalt- und Speicherelemente nur über zwei mögliche Zustände verfügen, im Allgemeinen EIN/AUS. Dr.-Ing. K. Jäger-Hezel, 17.11.2005 1 Ingenieurinformatik WS05/06 Das Dualsystem ist ein polyadisches Zahlensystem • zur Basis 2. • Es verfügt über einen Vorrat von zwei Ziffern, 0 und 1. (Das uns vertraute Dezimalsystem verfügt über die zehn Ziffern, 0 1 2 3 4 5 6….9.) • Beim Dualsystem steigt der Stellenwert einer Ziffer (Wertigkeit) von rechts nach links in Potenzen zur Basis 2 (beim Dezimalsystem in Potenzen zur Basis 10, siehe Beispiel oben). Der darstellbare Zahlenbereich hängt von der Anzahl der Stellen ab. Dies bedeutet allgemein: Mit N Binärstellen bzw. einer Bitfolge der Länge N können dargestellt werden: • • • N=4 Natürliche Zahlen (positive ganze Zahlen) von 0 bis 2N-1 Ganze Zahlen (positiv und negativ) zwischen -2N-1 und 2N-1 -1 Ein Intervall von reellen Zahlen mit begrenzter Genauigkeit 0 bis 15 -8 und 7 Natürliche Zahlen (Länge 4 Bit): Dual 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000 dezimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 2 Ingenieurinformatik WS05/06 Definition „Bit“ und „Byte“: • • Bit: „basic indissoluble information unit“: In der Informationstheorie ist dies die kleinste Einheit für den Informationsgehalt einer Nachricht. o Mit 1 Bit lassen sich 21 = 2 Zustände darstellen. 2 22 4 3 23 8 28 8 256 • Die Zusammenfassung von acht Bit heißt Byte. Dies ist die minimale Länge eines adressierbaren Datenworts. Der Rechner arbeitet immer mit Gruppen von Bits, entweder mit 8 Bits (1Byte), 16 Bits (2Byte), 32 Bits(4Byte) oder 64 Bits (8Byte), d.h. stets Vielfache von 8. • Kilo, Mega, Giga Byte: 1 KByte enthält nicht 1000 Bytes sondern 210 gleich 1024 Bytes! 20 1 MByte enthä lt 1024x1024 = 2 Bytes. 30 1 GByte enthält 1024x1024x1024 = 2 Bytes. Beispiel: Gesucht Dezimaldarstellung der Dualzahl 10110 ? 1*24 + 0*23+1*22+1*21+0*20 = 16 + 0 + 4 + 2 + 0 = 22 Gewichtsfaktoren der Stellen im Dualsystem: 28 27 26 25 24 23 22 21 20 256 128 64 32 16 8 4 2 1 216 215 214 213 212 211 210 29 65536 32768 16384 8192 4096 2048 1024 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 512 3 Ingenieurinformatik WS05/06 Beispiel: Gesucht Dualdarstellung der Dezimalzahl 1641 ? 1641 : 2 = 820 820 : 2 = 410 410 : 2 = 205 205 : 2 = 102 102 : 2 = 51 51 : 2 = 25 25 : 2 = 12 12 : 2 = 6 6:2=3 3:2=1 1: 2 = 0 Rest 1 Rest 0 Rest 0 Rest 1 Rest 0 Rest 1 Rest 1 Rest 0 Rest 0 Rest 1 Rest 1 „modulo“ heißt: 1641 mod 2 = 1 Ergebnis: (11001101001)2 Probe: 1+8+32+64+512+1024 = (1641)10 Bedeutet: Zahl ist Dezimalzahl (Basis 10) 1.1 Dualzahlen mit Vorzeichen Das erste Bit (von links) wird als Vorzeichen Bit verwendet. Steht dort eine Null ist die Zahl positiv. Steht dort eine 1, also das komplementäre Bit zu 0, handelt es sich um eine negative Zahl. Dabei wird die Null bei als positive Zahl aufgefasst. Darstellbarer Bereich für 4 Stellen: Eine Stelle wird für das Vorzeichen Bit benötigt, d.h. es bleiben nur noch 3 Stellen und damit 3 2 = 8 Zahlen für den positiven Bereich und 8 Zahlen für den negativen. Da die Null als positive Zahl aufgefasst wird, ergibt sich eine Unsymmetrie: -8 bis -1 und 0 bis 7 Ganze Zahlen (Länge 4Bit): dual 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 dezimal 0 1 2 3 4 5 6 7 -8 -7 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 4 Ingenieurinformatik WS05/06 1010 1011 1100 1101 1110 1111 -6 -5 -4 -3 -2 -1 Komple mentbildung : Die negative Dual-Zahl ergibt sich, indem man bei der entsprechend positiven Zahl stellenweise alle Nullen durch Eins ersetzt und umgekehrt ( d. h. alle Bits invertiert) und eine Eins dazuaddiert. Die gleiche Regel gilt bei Umwandlung von negativer nach positiver Zahl („Wohldefiniertheit“). Hintergrund: (nur für Informatik -Freaks!) Um in Rechenautomaten mit einem reinen Addierwerk auskommen zu können, versucht man die Subtraktion auf eine Addition zurückzuführen: 5 -5 __ 0 5 + (-5) ______ 0 allgemein: a–b=a+b -C Probe: wobei b := C – b Komplement von b zu C a–b=a+C–b -C Bei den folgenden Betrachtungen wird davon ausgegangen, dass zur Darstellung einer Binärzahl gerade N Binärstellen zur Verfügung stehen. Sollen nur positive Zahlen dargestellt N werden, so ist 2 -1 die größte in diesem Bereich darstellbare Zahl. Sie enthält in allen Binärstellen eine Eins. 4 Bei 4 Binärstellen ist dies: 2 -1 = 15 1111 Wählt man: C = 2N - 1 = 1111……111 Für Binärstellen N = 4: C = 1111 heißt: 1er Komplement 15 Subtraktion von C – b (wobei für N=4 b 0,1,2,3 … 15 sein kann) lässt sich einfach realisieren, indem man bei der N-stelligen Zahl b stellenweise alle Nullen mit Einsen vertauscht und umgekehrt. Diese einfache Subtraktions- bzw. Komplementierungsregel der stellenweisen Invertierung hat ihren Grund darin, dass die Zahl C in jeder Binärstelle eine Dr.-Ing. K. Jäger-Hezel, 17.11.2005 5 Ingenieurinformatik WS05/06 Eins enthält und somit bei der Subtraktion C – b nie von der nächst höheren Stelle „geborgt“ werden muss. Die Subtraktion von C ist am bequemsten, wenn man sie gar nicht durchführen muss. Dies ist mit N C = 2 = 1 0000…..00 ( heißt: 2er Komplement) mit N Nullen gerade der Fall, da die Eins in der (N+1)ten Stelle nicht mehr im betrachteten Zahlenbereich liegt. N Für Binärstellen N = 4 ist C = 2 = 10000 ( 4 Nullen) In die obige Gleichung C = 2N -1 einsetzen: N N a - b = a + (2 -1 – b) - ( 2 ) + 1 Eins addieren Bedeutet: Invertieren aller Bits von b Bedeutet: eine Null substrahieren, d.h. nichts ist zu tun 1.Beispiel: Binärstellen N = 4, a-b a=6 0110 b=3 0011 Alle Bits von b invertieren, ergibt 1100 1 addieren, ergibt: 1101 a + (-b) ______ 0110 + 1101 _____________ (1) 0011 = 3 Überlauf fällt weg, da N = 4. Dr.-Ing. K. Jäger-Hezel, 17.11.2005 6 Ingenieurinformatik WS05/06 2.Beispiel: N = 4, a-b a=3 b=7 0011 0111 invertieren: 1 addieren: 1000 + 1 ________ 1001 0011 + 1001 ____________ 1100 = -4 3. Beispiel: N = 4, a-b a=5 b=5 0101 0101 1010 1 _____ (1)0000 = 0 Überlauf entfällt, da Zahl auf 4 Stellen beschränkt ist. Achtung: Umwandeln einer Dualzahl in eine Dezimalzahl anhand der Gewichtsfaktoren gilt nur für positive Dualzahlen. Wenn die Dualzahl mit Vorzeichen zu interpretieren ist und an der ersten Binärstelle (von links) eine „1“ hat, also negativ ist, muss diese durch Komplementbildung in die entsprechend positive Zahl (bzw. in ihren Betrag) konvertiert werden. Diese ist mit den Gewichtsfaktoren umzurechnen. Beispiel: Welchen Dezimalwert hat die mit Vorzeichen behaftete Dualzahl (10100)2. Komplementbildung und 1 addieren: 01011 + 1 _____ 01100 1*8 + 1*4 +0*2 + 0*1 = 12 Ergebnis: -12 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 7 Ingenieurinformatik WS05/06 Hexadezimalsystem Polyadisches Zahlensystem • zur Basis 16. • Es verfügt über einen Vorrat von 16 Hexziffern, 0 bis 9, A, B, C, D, E, F. • Der Stellenwert einer Ziffer (Wertigkeit) von rechts nach links steigt in Potenzen zur Basis 16 (vgl. Gewichtsfaktoren). hexadezimal dual 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 dezimal 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Zusammenhang zum Dualsystem: 4 Bits ( sog. Halb-Byte) werden einer Hex-Ziffer zugeordnet. Dadurch wird für den Menschen eine lange Folge von Nullen und Einsen übersichtlicher. Gewichtsfaktoren der Stellen im Hexadezimalsystem: 165 1048576 164 163 65536 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 4096 162 256 161 160 16 1 8 Ingenieurinformatik WS05/06 Beispiel: Gesucht Dezimaldarstellung und Dualdarstellung für Hex-Zahl (9CB8)16 ? Dezimaldarstellung: Gewichtfaktoren einsetzen 9*4096 + 12*256 + 11*16 + 8*1 = (40120)10 36864 + 3072 + 176 + 8 Dualdarstellung: 1.Möglichkeit: Sukzessive Division der Dezimalzahl 40120 durch 2 40120 : 2 = 20060 20060 : 2 = 10030 10030 : 2 = 5015 5015 : 2 = 2507 2507 : 2 = 1253 1253 : 2 = 626 626:2 = 313 usw. Rest 0 Rest 0 Rest 0 Rest 1 Rest 1 Rest 1 Rest 0 2. Möglichkeit: Hexdezimal- Zahl direkt nach Dual umwandeln 9 C B 8 (1001 1100 1011 1000) 2 Im Dualsystem werden 16 Binärstellen benötigt, im Hex-System ¼ der Stellen. Beispiel: Gegeben ist Dezimalzahl 5555. Geben sie die zugehörigen hex und binär Zahlen an. 5555 :16 = 347 347 : 16 = 21 21 : 16 = 1 1: 16 = 0 Rest 3 Rest 11 Rest 5 Rest 1 (1 5 B 3) 16 (0001 0101 1011 0011) 2 Frage: Wie viele hex-Stellen hat ein 16-bit Wort? Antwort: 16/4 = 4 Stellen Dr.-Ing. K. Jäger-Hezel, 17.11.2005 9 Ingenieurinformatik WS05/06 Beispiel aus HTML: Die Hintergrundfarben in HTML- Dokumenten werden in hex Zahlen angegeben. Der sog. RGB-Wert ( „Red Green Blue“ Anteil) einer Farbe ergibt sich aus einer 6-stelligen Hex-Zahl, jeweils 2 Stellen für einen Farbanteil. z.B. R G B „# 00 00 00“ „# ff ff ff“ „# ff 00 00“ „ # 00 ff 00“ schwarz weiß rot grün Es können auf diese Weise 166 verschiedene Farben codiert werden ( 224 ca. 16,7 Mio ). 1.2 Hexadezimalzahlen mit Vorzeichen (nur für Informatik -Freaks!) mitVorzeichen dual 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 hex 0 1 2 3 4 5 6 7 8 9 A B C D E F Dr.-Ing. K. Jäger-Hezel, 17.11.2005 dez (signed) 0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1 ohne Vorzeichen dez (unsigned) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 Ingenieurinformatik WS05/06 Hexadezimalzahlen mit erster Stelle (links) von 0 bis 7 sind positiv, von einschließlich 8 bis F negativ. Beispiel: 16 Bit (2 Byte), N = 16 , 216 = 65536 Bei nur positiven Zahlen (z. B. Datentyp unsigned short mit 2Byte ) liegt der Wertebereich zwischen 0 und 65535. Die größte Zahl ist: (1111 1111 1111 1111)2 bzw. 65535. Bei Zahlen mit Vorzeichen (z. B. Datentyp signed short mit 2Byte) liegt der Bereich zwischen – 32768 und 32767. Die -1 hat die Binärdarstellung (1111 1111 1111 1111)2 . Beispiel: Gegeben ist Hex- Zahl (9CB8)16. Gesucht dezimal und dual Darstellung. 1. Fall: Zahl wird nicht mit Vorzeichen (unsigned Datentyp) interpretiert: (1001 1100 1011 1000) 2 9 * 163 + 12 * 162 + 11 * 161 + 8 = 40120 Ergebnis: 40120 2. Fall: Zahl wird mit Vorzeichen interpretiert: • • Da erste Stelle (von links) größer als 8 ist, handelt es sich um eine negative Zahl. Komplementbildung, um die entsprechende positive Zahl (bzw. den Betrag der Zahl) zu erhalten. Dann Gewichtsfaktoren einsetzen. 1. Möglichkeit: Komplementbildung der Hex-Zahl F F F F 15 15 15 15 12 11 9 C B 8 + 1 _____________ 6 3 4 8 1er-Komplement: 164 - 1 Hilfszeilen Komplementbildung und 1 addieren 6*163 + 3 * 162 + 4*161 + 8 = 25416 6*4096=24576 3*256= 768 4*16 = 64 8 -------------------25416 Ergebnis: -25416 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 11 Ingenieurinformatik WS05/06 2. Möglichkeit (bevorzugt verwenden!): Komplementbildung der entsprechenden Dual-Zahl (Alle Bits invertieren und Eins Addieren). 0110 0011 0100 0111 + 1 _______________________ 0110 0011 0100 1000 ( 6 3 4 8 )16 6*163 + 3 * 162 + 4*161 + 8 = 25416 Ergebnis: -25416 Beispiel: (2)10 entspricht bei 16 Bit (0002)16 Gesucht Hex-Darstellung von (-2)10 bei 16 Bit? FFFD + 1 __________ FFFE Ergebnis: F F F E Dr.-Ing. K. Jäger-Hezel, 17.11.2005 12 Ingenieurinformatik WS05/06 2 Oktalsystem Polyadisches Zahlensystem • zur Basis 8. • Es verfügt über einen Vorrat von 8 Ziffern, 0 bis 7. • Der Stellenwert einer Ziffer (Wertigkeit) von rechts nach links steigt in Potenzen zur Basis 8 (vgl. Gewichtsfaktoren). • Gewichtsfaktoren der Stellen im Oktalsystem: 84 83 82 81 80 4096 512 64 8 1 oktal dual dezimal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Beispiel: (177)8 in Dezimalzahl umwandeln. 1*64 + 7*8 + 7 = (127)10 Probe: 127 : 8 = 15 Rest 7 15 : 8 = 1 Rest 7 1 : 8 = 0 Rest 1 Dr.-Ing. K. Jäger-Hezel, 17.11.2005 ( 1 7 7 )8 13 Ingenieurinformatik WS05/06 3 Zahlenring Dr.-Ing. K. Jäger-Hezel, 17.11.2005 14