Das Binärsystem („Dualsystem“) Binärsystem Schaltungen im Computer kennen nur zwei Zustände: es liegt Spannung an („high“) oder nicht („low“). In der Informatik wird zur Darstellung dieser beiden Zustände das binäre Zahlensystem (= Zahlensystem mit der Basis 2) verwendet. Es gibt in diesem Zahlensystem nur 2 Ziffern: 0 und 1. Die einzelnen Ziffern im Binärsystem werden „Bits“ genannt. „Bit“ steht für „binary digit“, ein Bit kann nur die Werte „1“ (= „gesetztes Bit“) oder „0“ (= „nicht gesetztes Bit“) annehmen. Da gespeicherte Dateien sehr unterschiedliche Größen haben können, wurden verschiedene Maßeinheiten festgelegt: 1 „Byte“ = 8 Bit, 1 Kilobyte (KB) = 1024 Bytes, 1 Megabyte (MB) = 1024 KB, 1 GigaByte (GB) = 1024 MB, 1 Terabyte (TB) = 1024 GB, 1 Petabyte = 1024 TB. Beispiele: ein 5-seitiger WORD-Text ca. 35 KB ein Digitalfoto: ca. 4 MB ein MP3 Musikstück: ca. 3 MB ein 7-Minten langes Video in niedriger Qualität: ca. 12 MB ein 20-minütiges Video in guter Qualität: ca. 1 GB Die Medien, auf denen wir unsere Dateien speichern, besitzen sehr unterschiedliche Kapazitäten: eine Diskette fasst 1,4 MB, eine CD 700 MB, ein Memorystick z.B. 4 GB, eine DVD 4,3 GB. Festplatten, wie sie derzeit in Computer eingebaut werden, fassen 256 GB bis 1000 GB. Daraus lässt sich errechnen, wieviele Dateien auf bestimmten Medien gespeichert werden können. Auf eine CD passen z.B. 200 Digitalfotos zu je 3,5 MB oder 20.000 Texte zu je 35 KB (700 MB ≈ 700.000 KB, 700.000:35 = 20.000) Das niedrigstwertige („unterste“) Bit befindet sich, wie in jedem Zahlsystem, ganz rechts. Das höchstwertige Bit („oberstes“ Bit, sog. „MSB“ - most significant bit) ganz links. Die Zählung beginnt bei „0“, d.h. das unterste Bit = Bit-Nr. 0, das oberste z.B. in einem Byte = Bit-Nr. 7. Ein halbes Byte (4 Bit) wird auch „Nibble“ genannt. Beispiel: die folgende Binärzahl besteht aus 8 Bit (= 1 Byte = 2 „Nibble“): 0101 1101 Die Basis schreibt man meist tiefgestellt nach der Zahl: „101100112“ bedeutet: „Zahl wird im Binärsystem dargestellt“; „17910“ bedeutet dagegen: „Zahl im Dezimalsystem“. Jede Ziffer besitzt einen bestimmten Stellenwert, der sich allg. aus Position der Ziffer hoch Basis ergibt, wobei die Zählung der Position mit „0“ beginnt, d.h. die erste Ziffer (ganz rechts) befindet sich an Position „0“. Beachte, dass „hoch 0“ immer „1“ ergibt (2 0 = 1, 100 = 1)! Daher lautet der Stellenwert der ersten Stelle immer „1“. Im Folgenden eine Übersicht über den Stellenwert der einzelnen Ziffern eines Bytes: Position Stellenwert 7 27=128 6 26=64 5 25=32 4 24=16 3 23=8 2 22=4 1 21=2 0 20=1 Umwandeln Binär Dezimal: Wie ermittelt man nun den Wert einer Binärzahl? Man multipliziert den Stellenwert der einzelnen Ziffer mit der Ziffer selbst (kann im Binärsystem nur 0 oder 1 sein) und addiert anschließend diese Produkte. Im Folgenden als Beispiel das Byte 011010012: Bit-Nr: Stellenwert 2n 7 27=128 6 26=64 5 25=32 4 24=16 3 23=8 2 22=4 1 21=2 0 20=1 Beispielbyte: Wert der einzelnen Stellen: 0 0*27=0 1 1*26=64 1 1*25=32 0 0*24=0 1 1*23=8 0 0*22=0 0 0*21=0 1 1*20=1 Ergibt: 0+64+32+0+8+0+0+1 = 10510. Unser Beispielbyte „01101001“ entspricht daher „105“ im Dezimalsystem. Umwandeln Dezimal Binär Zahl durch Basis „2“ dividieren bis Zahl = 0, der Divisionsrest ergibt die einzelnen Binärziffern (beginnend beim untersten Bit!): Beispiel: die Dezimalzahl 29 soll ins Binärsystem umgewandelt werden: 29:2 14:2 7:2 3:2 1:2 = = = = = 14 7 3 1 0 Rest Rest Rest Rest Rest 1 (= unterstes Bit) 0 1 1 1 (= oberstes Bit) Die Zahl „29“ im Dezimalsystem entspricht demnach der Zahl „11101“ im Binärsystem Wertebereich: Da jede Ziffer einen bestimmten Stellenwert besitzt, ergibt sich (abhängig von der Anzahl der Ziffern) ein Höchstwert, der mit dieser Anzahl Ziffern dargestellt („codiert“) werden kann. Wenn z.B. in einem Byte alle 8 Bit gesetzt sind, ergibt das den Wert 1*2 7 + 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1+20 = 255. Der „Wertebereich“ eines Byte liegt daher Bereich von 0 bis 255. Weitere Beispiele: 16 Bit = max. 65.535; 32 Bit = max 4.294.967.295. Da die aktuellen Computer meist 32 Bit für die Adressierung des Speichers verwenden, können sie maximal 4,3 Mrd Bytes ≈ 4 GB Speicher ansprechen (da Windows selbst einen Teil des Speichers für sich reserviert, bleiben tatsächlich weniger übrig). Mehr als 4 GB hat daher nur mit einem 64-Bit System Sinn. Hexadezimalsystem Neben dem Binärsystem ist auch das Octalsystem (Basis = 8) und besonders das Hexadezimalsystem (Basis = 16) gebräuchlich. Da wir nur die Ziffern 0 bis 9 kennen, müssen im Hexadezimalsystem (Basis 16), die fehlenden Ziffern 10 bis 15 durch Buchstaben (A bis F) ersetzt werden. In der folgenden Tabelle zum Vergleich die Zahlen von 0 bis 16 im Dezimal-, Binär- und Hexadezimalsystem: Dezimalsystem 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Binärsystem 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 Hexadezimal-system 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 Warum hat man neben unserem Dezimalsystem und dem computereigenen Binärsystem noch ein weiteres entwickelt? Es ist kompakter als das Binärsystem und lässt sich leicht ins dieses umwandeln. Programmierer schätzen außerdem eine besondere Eigenschaft des Hexadezimalsystems: eine einzelne Ziffer entspricht immer einem „Nibble“, d.h. 2 Ziffern immer einem Byte: 25510 = 1111 11112 = FF16 12710 = 0000 11112 = 0F16 U.a. bei der Farbdarstellung erweist sich diese Eigenschaft als nützlich, da die einzelnen Farbwerte auf den ersten Blick voneinander unterschieden werden können. Windows speichert Farben normalerweise in 4 Bytes: ein Byte: ein Byte: ein Byte: ein Byte: Transparenz Rot-Anteil der Farbe Grün-Anteil der Farbe Blau-Anteil der Farbe Da ein Byte maximal 256 verschiedene Werte aufnehmen kann (s.o.), bedeutet das, dass maximal 256 verschiedene Rot-, 256 Grünund 256 Blau-Töne gespeichert werden können, das ergibt 256*256*256 = 16.777.216 verschiedene Farbmischungen. Viele Bildformate wie „JPG“ (wird von allen Digitalkameras verwendet) oder „PNG“ sind nach diesem Prinzip aufgebaut (JPG verwendet drei Bytes, d.h. ohne Transparenz; PNG verwendet vier Bytes, kann daher 256 verschiedene Transparenzstufen speichern). Ein hexadezimaler Farbwert wie „00FF00“ bedeutet: kein Rot-Anteil, kein Blau-Anteil, Grün dagegen auf Maximum. „FF00FF“ wäre eine Mischfarbe aus Rot und Blau (= „Magenta“ = Purpur), „00FFFF“ eine Mischfarbe aus Grün und Blau (= „Cyan“), „FFFF00“ eine Mischfarbe aus Rot und Grün (= Gelb). Haben alle drei Bytes den gleichen Wert, bekommt man einen Grauton zu sehen („C4C4C4“ z.B. wäre ein helles Grau). „000000“ ergibt Schwarz, „FFFFFF“ ergibt Weiß. Eine Übersicht über viele Farbmischungen mit ihren Hexadezimal-Farbwerten findet man z.B. unter „http://www.farb-tabelle.de/de/farbtabelle.htm“.