Bits+und+Bytes

=Bits und Bytes= Ein Computer kann nur mit Einsen und Nullen umgehen? Tatsächlich ist das für uns alle erst einmal schwer vorstellbar, aber es ist so. Wie kommen dann aber Texte und Bilder auf unseren Bildschirm und sogar Töne aus dem Lautsprecher des Computers? Wer sich dafür interessiert, der sollte versuchen, den Inhalt der folgenden Kapitel zu verstehen.

Codierung
__Alle__ vom Computer verarbeitbaren Daten (z.B. die Befehle in einem Computerprogramm, die Inhalte einer MP3-Datei, die verschiedenen Bestandteile einer Internetseite usw.) haben folgende Eigenschaften: > Ohne weitere Informationen können Sie die Daten in dieser Form noch nicht verstehen. > Aus einer losen Folge von Nullen und Einsen wie z.B. 01110001101000100100010100010101 werden somit dann im ersten Schritt Folgen von jeweils 8 Bits: 01110001 10100010 01000101 00010101. Der gewünschte Effekt: In zusammengehörigen 8 Bits kann man nicht nur 1 und 0 speichern. Man kann unterschiedliche Kombinationen von acht Nullen und Einsen als verschiedene Zustände begreifen.
 * 1) Informationen müssen geeignet verpackt werden.
 * 2) Verpackte Informationen sind einfach nur Daten, solange wir sie nicht verstehen wollen oder können.
 * 3) Daten werden im Computer digital in Form von Bits abgespeichert, z.B. so 01110001101000100100010100010101
 * 1) Es hat sich bewährt, diese Bitfolgen erst einmal in Bytes einzuteilen, welche meistens 8 Bit groß sind, d.h. Octets.
 * 1)  Die Umwandlung der in den Octets enthaltenen Einsen und Nullen  in für Menschen lesbare Zahlen ins Dezimalsystem und zurück in Einsen und Nullen wird durch das Dualsystem beschrieben. Die 8 Bits eines Octets stehen für 256 mögliche Zustände. Die verschiedenen Zustände werden durch Zahlen repräsentiert. Z.B. stehen die Bits 00000001 für eins, 00000010 bedeutet zwei, 00000011 bedeutet drei usw.
 * 2) Um den im Dualsystem gespeicherten Zahlen eine Bedeutung zu geben, benötigt man einen geeigneten Code. Der Code beschreibt, was die im Dualsystem gespeicherten Zahlen zu bedeuten haben. Die Codes sind unterschiedlich entsprechend der Art der Daten. Wenn man weiß, um welche Art von Daten es sich handelt, kann man die in den Octets verpackten Zahlen mit dem entsprechenden Code korrekt interpretieren. Der Code für die Speicherung einer Folge von Textzeichen ist dabei ein anderer als der Code für die Speicherung von Audio- oder Videodaten, Programmcode usw.

Ein paar Quellen dazu:
 * @http://www.dualzahlen.de/dual.html
 * @http://gisbsc.gis-ma.org/GISBScL2/de/html/GISBSc_VL2_V_lo5.html
 * @http://grundlagen-computer.de/allgemein/einheit-bit-byte-kbye-mbyte-und-gbyte
 * @http://de.wikipedia.org/wiki/Codebuch

Beispiel Zeichensätze / Zeichenkodierung / Codierung von Zeichen / ANSI, UNICODE u.a.
Sie werden als Computernutzer oft aufgefordert, Updates einzuspielen, neue Programme zu kaufen, neue Systeme einzusetzen etc. Die Gründe dafür liegen häufig einfach tatsächlich in der Überlegenheit neuerer Lösungen wie man an der Geschichte der Zeichensätze leicht ablesen kann. Als die Amerikaner den ersten Zeichensatz für Computer erfanden, da fehlten z.B. die im deutschen Alphabet enthaltenen Umlaute und noch einige andere Zeichen, die wir gerne nutzen. Es war damals den Erfindern des ASCII-Zeichensatzes nicht klar, wie viele Computer man jemals verkaufen würde und auch nicht, ob ein einziger dieser Computer in deutscher Sprache betrieben werden würde. So legte man sich auf einen Zeichensatz fest, der für die englische Sprache ausreichte. Weiterentwicklungen beseitigten diese Defizite mit steigenden Verkaufszahlen, aber nach und nach folgten andere Länder mit weiteren Sprachen und Wünschen. Neuentwicklungen berücksichtigten diese neuen Märkte immer erst dann, wenn man dort auch ein lukratives Geschäft machen konnte. So wurden aus den 8 Bit - mit denen 256 Zeichen kodiert werden konnten - in Folge neuerer Entwicklungen 16 Bit. Inzwischen reichen diese 2 16 Zustände allerdings auch nicht mehr aus und wir würden heute mit einem Unicode-Zeichensatz vier Byte für die Abbildung eines Zeichens benötigen (vierfacher Platzbedarf gegenüber ASCII), wenn es hierfür nicht die Möglichkeit einer platzsparenden eigenen Codierung gäbe, d.h. der Code wird noch einmal codiert vor der Speicherung und nicht 1:1 im Dualsystem gespeichert (siehe UTF-8)!

Weitere Informationen zur Kodierungen von Texten

 * []
 * @http://www.code-knacker.de/ansi.htm
 * @http://de.wikipedia.org/wiki/ISO_8859
 * @http://de.wikipedia.org/wiki/Windows-1250
 * http://de.wikipedia.org/wiki/ISO_8859-1#Windows-1252
 * @http://de.wikipedia.org/wiki/UTF-8
 * @http://de.wikipedia.org/wiki/Unicode
 * @http://www.hilfdirselbst.ch/foren/charset_utf-8_oder_iso-8859-1__P468816.html siehe Zusammenfassung am Ende!
 * @http://perlgeek.de/de/artikel/charsets-unicode
 * @http://www.gentoo.org/doc/de/utf-8.xml
 * @http://www.w3schools.com/xml/xml_encoding.asp
 * @http://www.torsten-horn.de/techdocs/encoding.htm
 * @http://www.chip.de/news/ASCII-Code-Tabelle-Alle-Sonderzeichen_51205777.html
 * @http://www.torsten-horn.de/techdocs/ascii.htm

Andere Beispiele für Codierungen
Ähnlich wie die Wandlung von Texten in Binärcodes und umgekehrt funktionieren andere Codes wie z.B.: Morsecode, DTMF-Codes, Römische Zahlen, Fingeralphabet, internationales Flaggenalphabet, ...
 * @http://de.wikipedia.org/wiki/Morsezeichen
 * @http://www.mygeotools.de/tools/codetabellen/
 * @https://www.google.de/search?q=codetabelle&biw=1280&bih=894&tbm=isch&tbo=u&source=univ&sa=X&ei=6ih8VJqoL4S4OseugJAH&ved=0CDIQsAQ Bilder von Codetabellen
 * @http://www.bergziege-owl.de/category/geocaching-in-owl/codetabellen-geocaching/

Hexadezimalsystem
Im Hexadezimalsystem ist eine verbreitete alternative Darstellungform (gegenüber dem Dezimal- und Dualsystem) für Octet-Werte, da jedes Byte mit genau 2 Zeichen in der Darstellung auskommt:
 * @http://de.wikipedia.org/wiki/Hexadezimalsystem
 * @http://paletton.com/ Farbdarstellung (z.B. für Webseiten) im Hexadezimalsystem

Beliebige Computerdaten beliebiger Programme kann man betrachten (und ggf. auch verändern) mit einem Hex-Editor, wie z.B. XVI32.
 * @http://www.heise.de/download/hex-editor-xvi32.html

Ein mit dem Programm Notepad geschriebener Text wird in Notepad wie folgt angezeigt:

[[image:pcbasics/WeltTxt.PNG]]
Mit dem Hex-Editor kann man sich die Codierung einer Datei wie HexAnsiText.txt auch direkt ansehen: Die linke Spalte zeigt jeweils in HEX-Notation die Position des ersten Bytes in der Anzeige rechts daneben. Das Byte mit dem Hexwert 21 in der zweiten Zeile steht in der Datei also an der Stelle A, d.h. dezimal 10. Das erste Byte der Datei mit dem Hexwert 48 steht an der Stelle 0. Die 21 steht also im 11ten Byte der Datei.

Der Anfang eines Programms wie z.B. Photoshop.exe sieht wie folgt aus: Die allermeisten binär codierten Dateien enthalten in den ersten Bytes eine Kennung des Dateityps. Dieses ist die sogenannte "Magic Number" bzw. "File Signature". Sehr schön erkennt man in unserem Beispiel die bei allen ausführbaren Programmen identischen Bytes am Anfang: 4D, 5A. Diese beiden Bytes stehen im ANSI Zeichensatz für die Buchstaben M und Z. Dieses sind die Initialen von Mark Zbikowski, einem an MS-DOS beteiligten Entwickler, siehe @http://en.wikipedia.org/wiki/DOS_MZ_executable.

Auch jedes PDF-Dokument fängt mit den gleichen Bytes an, nämlich 25, 50, 44 und 46 (in HEX-Darstellung). Diese Bytes stehen für die Zeichen "%PDF":

Farbpalette
Die in Adobe Photoshop integrierte Farbpalette zeigt sowohl dezimale als auch hexadezimale Darstellungen ausgewählter Farben an. Die Farbwerte beliebiger in Photoshop geladener Fotos lassen sich mit dem Pipette-Werkzeug einfach ermitteln.

[[image:PhotoshopPalette.PNG]]
Zusammenstellungen aufeinander abgestimmter Farbtöne für schicke Designs lassen sich leicht z.B. auf folgender Webseite ermitteln:
 * @http://paletton.com/ Geben Sie einfach unten auf der Seite als "Base RGB" den mit Photoshop ermittelten Hexcode ein!

Wann sprechen wir eigentlich von Daten und wann von Informationen?
Kennen Sie den Unterschied?
 * @http://www.managementtheorie.de/die-unterschied-zwischen-daten-information-und-wissen
 * @http://www.klickdichschlau.at/forum/viewtopic.php?id=81

Verständnisfragen / Übungsaufgaben

 * 1) Was ist ein Bit?
 * 2) Was ist ein Byte?
 * 3) Was ist ein Octet?
 * 4) Was ist ein Dualsystem?
 * 5) Wie berechnet man die Anzahl der digital darstellbaren Zustände?
 * 6) Wie viele unterschiedliche Zustände kann man in einem Octet darstellen?
 * 7) Was versteht man unter einem Code?
 * 8) Erläutern Sie den Unterschied zwischen Daten und Informationen!
 * 9) Was ist ein Hexadezimalsystem?
 * 10) Welche Vorzüge besitzt das Hexadezimalsystem bei der Darstellung beliebiger Daten gegenüber dem Dual- bzw. dem Dezimalsystem?

Übungen
> (siehe z.B. @http://www.dualzahlen.de/dual.html) > (siehe z.B. @http://www.code-knacker.de/ansi.htm) > Wann schrieb der Datenbankserver diesen letzten Eintrag? Geben Sie die Uhrzeit in Stunden, Minuten und Sekunden an (Format: hh:mm:ss).
 * 1) Wandeln Sie die Zahlen 255, 31, 56 und 173 in die 8 Bit - Darstellung im Dualsystem um.
 * 2) Wandeln Sie folgende Bytes in Zahlen um: 11101101, 11010010, 01000011, 10110010
 * 1) Welcher Text wurde in den folgenden Zahlen kodiert (siehe ANSI-Tabelle)? 86, 73, 68, 69, 79
 * 1) Wie sieht die binäre Darstellung der obigen Zahlen aus? (Umwandeln in Dualsystem)
 * 2) Notieren Sie die Inhalte der obigen Octets im Hexadezimalsystem!
 * 3) Stellen Sie folgenden den Text als Bits dar: "Hallo Welt!". Die Codierung soll entsprechend ANSI-Standard erfolgen!
 * 4) Die Angaben von Farben in HTML-Seiten erfolgen z.B. in folgender hexadezimaler Form: #EA13D9, siehe @http://www.farb-tabelle.de/de/farbtabelle.htm. Im obigen Farbcode steht die Angabe EA für das erste Byte, welches den Rot-Anteil der Farbe beschreibt, 13 für den Grün-Anteil und D9 für den Blau-Anteil dieser RGB-Farbangabe. Überprüfen Sie die Werte in der genannten Tabelle,
 * indem Sie für die Farbe chocolate4 (dezimal: 139,69,19) die zugehörigen Hex-Codes ermitteln!
 * indem Sie für die Farbe orchid2 (hexadezimal: EE7AE9) die zugehörigen Dezimalwerte ermitteln!
 * 1) Am 23.11.2013 um 6.05 Uhr wurde ein Mitarbeiter Ihres Rechenzentrums aus dem Bett geklingelt. Angeblich drang im Laufe der Nacht ein unbekannter Hacker in den Datenbankserver ein und manipulierte diesen so, dass er zum Absturz gebracht wurde und nicht mehr starten konnte. In der Protokolldatei des Datenbankserevrs ist der letzte Eintrag mit einer Zeit in Sekunden, die seit Mitternacht verstrichen sind, versehen. Die hexadezimale Zahl lautet 04EC.
 * 1) Wandeln Sie den Hexcode C3B7A9FF um in die Darstellung im Dualsystem und im Dezimalsystem. Um wie viele Bytes handelt es sich?

Aufgabe 2
Sie speichern das Wort "Musik" in einer Textdatei entsprechend ANSI-Standard auf der Festplatte Ihres Computers. Notieren Sie die Bits der Textdatei in der Hexadezimal-Notation!

= Lösungen =

Hier nur weiter lesen, wenn Sie Ihre Ergebnisse kontrollieren möchten oder Tipps zur Herangehensweise benötigen!
Verständnisfragen: > **Kleinste Speichereinheit mit zwei Zuständen, z.B. 1 oder 0, true oder false, weiss oder schwarz, ...** > **Gruppierung von Bits zur Darstellung von mehr als 2 Zuständen eines Bits, z.B. für Tastatureingaben (ASCII Zeichensatz 7-Bit, ANSI Zeichensatz 8-Bit).** > **Eine Gruppierung von exakt 8Bit.** > **Das Dualsystem ist ein Zahlensystem und wird auch Zweiersystem oder Binärsystem genannt. Es verwendet zur Darstellung von Zahlen nur zwei Ziffern, z.B. 1 und 0. Eine im Dualsystem dargestellte Zahl 6 sieht dann z.B. wie folgt aus: 110.** > **n = 2^Anzahl der verwendeten Bits** > **n = 2^8** > **Die Abbildung von Zahlenwerten auf Bedeutungen, z.B. steht die Zahl 65 im ANSI-Zeichensatz für ein A.** > **Daten sind einfach gesagt gespeicherte Bits, deren Bedeutung sich uns nicht sofort erschliesst. Informationen können wir aus den gespeicherten Bits gewinnen, wenn wir die Codes kennen, mit denen wir die Daten in Informationen wandeln können.** > **Ein Zahlensystem zur Basis 16, d.h. jede Stelle einer Zahl im Hexadezimalsystem stellt 16 Zustände dar. Es werden die Zeichen 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F verwendet. Es ermöglicht eine vereinfachte Darstellung der Zahlen des Dualsystems, indem jeweils der Wert von exakt 4 Bit in einem Zeichen repräsentiert wird.** > **4Bit (im Dualsystem) können mit nur einem Zeichen dargestellt werden. Im Dezimalsystem würde man bereits 2 Zeichen benötigen.**
 * 1) Was ist ein Bit?
 * 1) Was ist ein Byte?
 * 1) Was ist ein Octet?
 * 1) Was ist ein Dualsystem?
 * 1) Wie berechnet man die Anzahl der digital darstellbaren Zustände?
 * 1) Wie viele unterschiedliche Zustände kann man in einem Octet darstellen?
 * 1) Was versteht man unter einem Code?
 * 1) Erläutern Sie den Unterschied zwischen Daten und Informationen!
 * 1) Was ist ein Hexadezimalsystem?
 * 1) Welche Vorzüge besitzt das Hexadezimalsystem bei der Darstellung beliebiger Daten gegenüber dem Dual- bzw. dem Dezimalsystem?

Wandeln Sie die Zahlen in die 8 Bit - Darstellung im Dualsystem um: code Hier muss man sich überlegen, welche Bits jeweils in einem Octet gesetzt (gesetzt=1, nicht gesetzt=0) sein müssen, damit die entsprechende Zahl im Computer korrekt abgebildet wird. 255 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 11111111 31 = 128? nein + 64? nein + 32 passt auch nicht + 16 ja Rest 15, + 8 ja Rest 7 + 4 ja Rest 3 + 2 ja Rest 1 + 1 ja Rest 0 = 00011111 56 = Bit mit Wertigkeit 128? nein! + Bit mit Wertigkeit 64? nein! + Bit mit Wertigkeit 32 ja, Rest 24 + Bit mit Wertigkeit 16 ja, Rest 8 + Bit mit Wertigkeit 8 ja, Rest 0 + 0 + 0 + 0 = 00111000 173 = 128 Rest 45 + 64 nein + 32 Rest 13 + 16 nein + 8 Rest 5 + 4 Rest 1 + 2 nein + 1 Rest 0 = 10101101

code Wandeln Sie folgende Bytes in Zahlen um: 11101101, 11010010, 01000011, 10110010 (siehe z.B. @http://www.dualzahlen.de/dual.html) code 11101101 = 128 + 64 + 32 + 0*16 + 8 + 4 + 0*2 + 1 = 237 11010010 = 128 + 64 + 0*32 + 16 + 0*8 + 0*4 + 2 + 0*1 = 210 01000011 = ... 10110010 = ... code Welcher Text wurde in den folgenden Zahlen kodiert (siehe ANSI-Tabelle)? 86, 73, 68, 69, 79 (siehe z.B. @http://www.code-knacker.de/ansi.htm) code 86 = V 73 = I 68 = D 69 = E 79 = O code Wie sieht die binäre Darstellung der obigen Zahlen aus? (Umwandeln in Dualsystem) Notieren Sie die Inhalte der obigen Octets im Hexadezimalsystem! code 86 = V = 01010110 = 0101 0110 = 56 73 = I = 01001001 = 0100 1001 = 49 68 = D = ... 69 = E 79 = O code Stellen Sie folgenden den Text als Bits dar: "Hallo Welt!". Die Codierung soll entsprechend ANSI-Standard erfolgen! code Der Text "Hallo Welt!" entspricht nach ANSI-Tabelle den folgenden Zahlen = 72, 97, 108, 108, 111, 32, 87, 101, 108, 116, 33 Als Bits dargestellt sieht das dann folgendermassen aus: 01001000, 01100001, 01101100 ...

code Farbwerte wandeln: 01000101 00010011 || 01111010 11101001 || Hacker: code Sekunden, die seit Mitternacht verstrichen sind als Hex-Angabe: 04EC. - C steht für 12 * 16^0 - E steht für 14 * 16^1 - 4 steht für 4 * 16^2 - 0 steht für 0 * 16^3
 * Farbe || dez. || hex. || bin. ||
 * chocolate4 || 139,69,19 || 8B 45 13 || 10001011
 * orchid2 || 238,122,233 || EE 7A E9 || 11101110

Sekunden seit Mitternacht (dez.) = 0*16^3 + 4*16^2 + 14*16^1 + 12*16^0 =  0    +  1024  +   224   +    12                             = 1260 s

Umrechnen in Minuten: Minuten seit Mitternacht (dez.) = 1260s / 60 = 21 min.

Der Rechner wurde also um 00:21:00 zum Absturz gebracht.

code

Aufgabe 2
Das Wort "Musik" => ANSI-Codes 77,117,115,105,107 => Dualsystem 01001101,01110101,01110011,01101001,01101011 => Hexsystem 4D,75,73,69,6B