2013-02-21 10 views
5

Ich habe in letzter Zeit mehr darüber nachgedacht, welche Art von Arbeit Computer-Hardware tun muss, um die Dinge zu produzieren, die wir erwarten.Wie verarbeiten Computer ascii/Text & Bilder/Farbe anders?

Beim Vergleichen von Text und Farbe scheint es, dass beide auf Kombinationen von 1 und 0 mit 256 möglichen Kombinationen pro Byte beruhen. ASCII kann einen Buchstaben wie (01100001) als den Buchstaben "A" darstellen. Aber dann kann eine Farbe R (01100001), G (01100001), B (01100001) eine zufällige Farbe darstellen. Auf einer niedrigen Ebene betrachtet, liest der Computer gerade diese Sammlungen von Einsen und Nullen, was passieren muss, um sicherzustellen, dass der Computer die Farben R (01100001), G (01100001), B (01100001) und nicht den Buchstaben A dreimal rendert auf meinem Bildschirm?

+2

Anders als meine Antwort unten, wenn Sie wissen möchten, wie Computer ab dem niedrigsten Niveau arbeiten, empfehle ich diese Lesung: Computer-Organisation und Design (Autoren Patterson, Hennessy). Wenn Sie es lesen (oder gleiches Material lesen), werden Sie sehen, wie die CPU funktioniert, und Sie werden ein besseres Verständnis der Maschine und ihrer vielen Ebenen bekommen. – Numbers

+0

Ja, ich stimme zu. Ich denke, ein Buch über Comp-Architektur/Organisation würde viele meiner letzten Kuriositäten befriedigen. Guter Anruf, danke. – ThisBetterWork

+0

+1 zu @Numbers 'Vorschlag. Ich wollte das gleiche Buch vorschlagen. – Iguananaut

Antwort

5

Ich bin mir nicht ganz sicher, ob diese Frage für Stack Overflow geeignet ist, aber ich gebe trotzdem eine grundlegende Antwort. Obwohl es eine sehr komplizierte Frage ist, denn je nachdem, wie tief Sie in die Antwort einsteigen möchten, könnte ich ein ganzes Buch über Computerarchitektur schreiben, um dies zu tun.

Um es einfach zu halten, gebe ich Ihnen nur das: Es ist alles eine Frage des Zusammenhangs. Zuerst lassen Sie uns nur Text angehen:

Wenn Sie, sagen, einen Texteditor die implizite Annahme öffnen, ist die Daten in Text angezeigt werden in der Natur. Der anzuzeigende Text enthält einige Bytes im Speicher (möglicherweise aus einigen Bytes auf der Festplatte kopiert). Es gibt keinen magischen internen Kontext aus der Sicht des Speichers, dass diese Bytes Text sind. Stattdessen enthält die Quelle für den Texteditor einige Befehle, die auf diese Bytes zeigen und sagen "diese Bytes stellen beispielsweise 300 Zeichen Text dar". Dann gibt es eine komplexe Sequenz von Schritten, die Bibliothekscode bis hin zu Hardware umfasst, die das Zuordnen dieser Bytes gemäß einer Codierung wie ASCII (es gibt viele andere Arten des Codierens von Text) zu Zeichen, Finden dieser Zeichen in einer Schriftart, Schreiben dieser Schriftart zu der Bildschirm usw.

Der Punkt ist es nicht haben, diese Bytes als Text zu interpretieren. Es tut nur, weil das ein Texteditor tut. Sie könnten es hypothetisch in einem Bildprogramm öffnen und ihm mitteilen, dass es dieselben 300 Bytes wie ein 10x10 Array (oder Bild) von RGB-Werten interpretieren soll.

Für Farben gilt die gleiche Logik. Sie sind nur Bytes im Speicher. Aber wenn der Code, der etwas auf den Bildschirm zeichnet, entschieden hat, welche Pixel mit welchen Farben geschrieben werden sollen, leitet er diese Bytes über eine Speicherzuordnung an die Grafikkarte weiter, die sie dann in Befehle übersetzt, die an den Monitor gesendet werden in einem binären Format, das Pixel und die Farben darstellt, obwohl die Realität viel komplizierter ist), und der Monitor selbst enthält Firmware, die dann das Detail der Zuordnung dieser Farben zu den physikalischen Pixeln behandelt. Die Zahlen, die die Farben selbst darstellen, werden irgendwann in einen bestimmten Strom für jeden R/G/B-Kanal umgewandelt, um seine Intensität zu erhöhen oder zu verringern.

Das ist alles, für das ich Zeit habe, aber es ist ein Anfang.

Update: Nur meinen Punkt zu illustrieren, habe ich den Text von Flatland von here. Das sind nur 216624 Bytes ASCII-Text (wird vom Webbrowser als solches interpretiert, basierend auf dem Kontext: Die Erweiterung .txt hilft, aber der Webserver bietet auch einen MIME-Typ-Header, der den Browser darüber informiert, dass er als reiner Text interpretiert werden soll. Ihr Browser könnte auch die Bytes analysieren, um zu bestimmen, dass ihr Muster dem von einfachem Text ähnelt (und dass es keine überwältigende Anzahl von Bytes gibt, die keine ASCII-Zeichen darstellen).Ich hängten einige Räume an das Ende des Textes, so dass seine Länge 217.083 ist, die 269 * 269 * 3 ist und aufgetragen es dann als 269 x 269 RGB-Bild:

Nicht besonders interessant aussehende . Aber der Punkt ist, dass ich genau die gleichen Bytes genommen habe und sagte der Software: "Okay, das sind jetzt RGB-Werte". Das heißt nicht, dass das Betrachten von Nur-Text-Bytes als Bilder nicht nützlich sein kann. Zum Beispiel kann es ein nützlicher Weg sein, einen Verschlüsselungsalgorithmus zu visualisieren. This zeigt ein Bild, das mit einem ziemlich unsicheren Algorithmus verschlüsselt wurde - Sie können immer noch ein sehr gutes Gefühl für die Muster von Bytes in der ursprünglichen unverschlüsselten Datei bekommen. Wenn es sich um Text und nicht um ein Bild handeln würde, wäre das nicht anders, denn Text in einer bestimmten Sprache wie Englisch kennt auch statistische Muster. Ein guter Verschlüsselungsalgorithmus würde dazu führen, dass das verschlüsselte Bild mehr wie zufälliges Rauschen aussieht.

1

Null und eins sind nur Null und eins, nichts mehr. Ein Byte ist nur eine Sammlung von 8 Bit. Die Bedeutung, die Sie den Informationen zuweisen, hängt davon ab, was Sie gerade brauchen, welche "Sprache" Sie verwenden, um Ihre Informationen zu interpretieren. 65 ist entweder Buchstabe A in ASCII oder Nummer 65, wenn Sie es beispielsweise in int a = 65 + 3 verwenden. Auf niedriger Ebene werden verschiedene (tausende) Maschinenanweisungen ausgeführt, um sicherzustellen, dass Ihre Daten ordnungsgemäß behandelt werden, abhängig beispielsweise von der Art der zu lesenden Datei, den Headern, dem Prozess, der die Daten anfordert, und so weiter. Die verschiedenen Funktionen auf hoher Ebene, die Sie zum Behandeln verschiedener Informationen verwenden, werden auf sehr unterschiedliche Maschinencodes erweitert.

Verwandte Themen