Wie Computer übersetzen alles binäre? Wenn Sie sehen, ein binärer code, wie wissen Sie, wenn es für eine Zahl oder ein Wort oder eine Anleitung?
Ich wissen, wie der Computer übersetzen die zahlen in eine Binärzahl um. Aber was ich nicht verstehe ist, dass ich gehört habe, dass Computer alles zu übersetzen (Wörter, Anweisungen, ...) auf binäre, nicht nur zahlen. Wie ist das möglich?
Könnten Sie mir zeigen einige Beispiele? Wie funktioniert ein computer übersetzt die Buchstaben "A" bis binäre?
Und wenn Computer sehen, ein binärer code, wie können Sie dann wissen, wenn diese lange Zeichenkette von 0 und 1 für eine Zahl oder ein Wort oder eine Anleitung?
.
Exemple:
Lassen Sie uns sagen, ein computer-Programmierer codiert, der Buchstabe "Z", so dass es übersetzt, um diese Binär-string: 11011001111011010111
So, wenn der computer Begegnung dieser Binär-string, er wird übersetzen, es auf den Buchstaben "Z".
Aber was passiert, wenn wir bitten, diesen computer "was ist das Produkt von 709 von 1259?"
Den computer würde uns Antworten "892631". Aber die Zahl, bei der übersetzung in binäre, ist 11011001111011010111.
So, wie würde es einen Unterschied machen, zwischen "Z" und "892631"?
.
Bitte beachten Sie, dass ich weiß nicht viel über computer-Wissenschaft, also bitte erklärt alles in einfachen Worten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Computern, die nicht wirklich alles übersetzen binary, alle binäre aus dem starten, und der computer weiß nie, etwas anderes als binäre.
Den Charakter
A
im Speicher abgelegt wäre01000001
, und der computer nicht sehen, dass alles andere als eine binäre Zahl. Wenn wir Fragen, die computer anzeigen, die Zahl als ein Zeichen auf dem Bildschirm, es wird die grafische Darstellung, für die es in einer Schrift, die definition zu finden, einige andere binäre zahlen zu senden, um die Bildschirm-hardware.Zum Beispiel, wenn der computer war ein acht-bit-Atari, würde es finden acht binäre Werte zur Darstellung der Figur
A
auf dem Bildschirm:Wie Sie sehen können, die binäre Werte wäre dann zu übersetzen, um dunkle und helle Pixel, wenn die Grafik-hardware würde, ziehen Sie es auf dem Bildschirm.
Ähnlich, was auch immer wir tun, mit der zahlen im computer, und es ist alle Wege binäre Werte um, die Berechnungen auf binäre Werte, und übersetzen Sie in andere Binär Werte.
Wenn Sie, zum Beispiel, nehmen Sie die Zeichen-code für
A
und wollen, um es anzuzeigen, wie eine decimal-Zahl, die der computer berechnen, dass die dezimale Darstellung der Zahl der Ziffern 6 (110
) und 5 (101
), zu übersetzen, dass der Charakter6
(00110110
) und der Charakter5
(00110101
), und dann übersetzen diese in Ihre grafische Darstellung.Das ist eine gute Frage, und das würde Jahre dauern und mehrere Doktoranden, vollständig zu erklären. Kann ich Ihnen eine simple Antwort, aber vollständig zu verstehen, müssen Sie VIEL mehr tun, Forschung. Könnte ich Ihnen einige Kostenlose online-Kurse vom MIT zum Thema hier.
Auf der untersten Ebene, dem Buchstaben A und der Zahl 65 in der Tat gespeichert, mit der gleichen Folge von 0 und 1 ist. 1000001, wenn ich mich nicht Irre.
Den computer dann entscheidet, was es ist, wenn es greift, es aus dem Speicher. Dies bedeutet, dass die Buchstaben können als zahlen dargestellt, und Umgekehrt.
Die Art und Weise der computer weiß, was er sucht, ist, dass der Programmierer ihm sagt, was Ihr sucht. Der Programmierer sagt, ich will eine Nummer gespeichert, die bei solchen und solchen Ort, und der computer geht und sucht es.
Lets Schritt eine Ebene nach oben, denn nur selten tun Programme-Programm auf einem so niedrigen Niveau nicht mehr. andere Programme (in der Regel-Compiler, die code wie C++ und verwandeln Sie es in etwas, das der computer verstehen kann) Sicherstellen, dass die Position, die wir aufrufen, ist in der Tat, was wir sagen, es ist. Sie haben zusätzliche Informationen, die Ihnen sagt, dass diese Besondere Reihe von 1 und 0 ist, ist eigentlich eine floating-point-Typ (eine Dezimalstelle) in der Erwägung, dass dieser Satz und integer(ohne Dezimalpunkt)
Dann andere Typen bauen auf jene Arten, größere Ganzzahlen oder Fließkommazahlen oder strings von Zeichen, und wieder wird der Compiler die Durchsetzung der Arten.
Dies ist eine grobe Vereinfachung, und ich merke, dass alles hier nicht ganz richtig ist, aber es erhalten Sie auf dem richtigen Weg. Sie vielleicht überprüfen Sie heraus einige der folgenden Themen, um zu bekommen eine viel bessere Idee:
Wie Anweisungen unterscheiden sich von Daten?
http://en.wikipedia.org/wiki/Computer_data_storage
Wie werden Daten, Adresse und Unterricht differenziert im Prozessor/Register/memory?
http://en.wikipedia.org/wiki/Reference_(computer_science)
Hoffe, das klärt die Dinge ein wenig. Fühlen Sie sich frei, zu Fragen, für die Klarstellung!
So how would it make a difference between "Z" and "892631"?
Nicht. Der computer, alles ist 0s und 1s. Sie raw-bits haben keine Bedeutung, bis der Prozessor ist GESAGT, was zu tun mit diesen 0EN und 1en!
Ich könnte zum Beispiel eine variable erstellen
x
werden und seinen Wert0b01000001
(0b bedeutet "dies ist eine Zahl, die ich bin zu beschreiben Binär"). Ich könnte dann Fragen Sie den Prozessor zu drucken variablex
auf dem Bildschirm für mich. Aber ich muss ZUERST sagen, der Prozessor WASx
ist!So
x
selbst bedeutet nichts, außer das roh-bits01000001
. Aber als Programmierer ist es meine Aufgabe darin, dem computer mitzuteilen, wasx
wirklich bedeutet.Computer verwendet nur 7 bits für die Speicherung von Buchstaben/Sonderzeichen in der Erwägung, dass es verwendet alle 8 bits eines Bytes beim speichern einer Nummer.
Nehmen wir "A" UND "65" als Beispiele.
65/2 -- QUO ist 32 und Erinnerung ist 1 1 2 hoch 0 ist 1
32/2 quo ist 16 und Erinnerung ist 0 01
16/2 quo ist 8, und die Erinnerung wird 0 001
8/2 quo ist 4, und die Erinnerung wird 0 0001
4/2 quo ist 2 und die Erinnerung wird 0 00001
2/2 quo ist 1 und die Erinnerung wird 0 1000001 2 hoch 6 64 ist
ASCII-Wert für den Buchstaben A gespeichert ist, als 01000001 Binär-format (Es verwendet nur 7 bit und 8. bit ist gespeichert mit 0 für Buchstaben und Sonderzeichen).
Ich hoffe, das hilft.
Lassen Sie uns diskutieren, einige Grundlagen hier:
Lassen Sie uns besprechen Sie Ihre erste Teil Ihrer Frage - Könnten Sie mir zeigen einige Beispiele? Wie funktioniert ein computer übersetzt die Buchstaben "A" bis binäre?
Nun, alles, was Sie sehen auf RAM oder Festplatte ist nicht Energie oder keine Energie in ein bestimmtes byte und nennen wir es ein Binäres format ist für das menschliche Verständnis (nennen wir Sie 0 für keine Energie und 1 für Energie).
Ist es an der compiler jetzt, wie es gelagert werden muss. Wenn es ein C-compiler auf AMD-Prozessoren/windows OS, es speichert den Wert in 2 bytes (ein byte 5 und byte für byte 6). Die byte speichern den Wert 5 auf der rechten Seite von 6, wenn es ein AMD-Verarbeitung - es ist als low-endian. C-Programm unterstützt nicht das Zeichen 'அ", wie es erfordert mehr als 1 byte zu speichern, internationale Zeichen.
Wenn es ein Java-compiler er verwendet eine variable Länge von 4 Byte, UTF-16. Im Falle des Buchstaben 'A' erfordert 1 bytes als Unicode/ASCII-Darstellung ist 65. In der Erwägung, dass, wenn Sie speichern eine internationale Sprache, die Zeichen wie 'அ' (Ähnlich wie in der Tamil Sprache), dann wird der entsprechende Unicode-Wert 2949 und der entsprechende binäre Wert ist 11100000 10101110 10000101 (3 bytes). Java hat keine Probleme, zu speichern und zu Lesen 'A' und 'அ'.
Nun stellen Sie sich vor, dass Sie gespeichert haben, das Zeichen 'அ' auf der Festplatte, die mit Java/Windows/AMD-Prozessor als eine Art Zeichen (Char).
Nun stellen Sie sich vor Sie möchten, Lesen Sie diese mittels C-Programm als Char. Der C-compiler unterstützt nur ASCII, aber nicht die vollständige Liste der Unicode eingestellt. Hier die C Lesen Sie die am weitesten rechts ( 10000101) byte der oben genannten 3 bytes (Für Zeichen eingeben, es liest 1 byte), was bekommt man auf dem Bildschirm? Dein C-Programm ist, Lesen Sie in diesem 1 byte ohne Problem und malen werden diese � auf dem Bildschirm, wenn Sie aufgefordert hatte, Ihr Programm zu drucken. Also der compiler ist der Unterschied-maker.
****Lassen Sie uns diskutieren, der zweite Teil Ihrer Frage ist nun:**
*Und wenn der Computer sehen, ein binärer code, wie können Sie dann wissen, wenn diese lange Zeichenkette von 0 und 1 für eine Zahl oder ein Wort oder eine Anleitung?***
Nun, Ihr laden Sie das kompilierte Java-Programm in den RAM in der Text-und Daten-Bereich (RAM, aufgeteilt in Text-und Data-Bereich auf hohem Niveau). Sie Fragen sich jetzt die ALU der Prozessor führt einen Satz von Anweisungen für Ihr Programm nennt man einen Prozess.
Die Zeile in der das kompilierte Programm ist eine Anweisung, um die Daten zu verschieben von einer Variablen zu einer anderen.
Wenn die ALU führt die erste Anweisung geht es in die entsprechenden Register, draußen zu sitzen, wenn der RAM. Der Prozessor haben Satz von Registern für Daten und setzen von Registern Unterricht. Der ALU weiß jetzt, was zu registrieren ist für das, was, basierend auf, die Sie führt Ihre Anweisung.
Hoffe, das hilft.
11100000 10101110 10000101
(3 bytes). Das ist offensichtlich nicht wahr, weil UTF-16 - codes unicode-Codepoint als eine oder mehrere 2-byte-Blöcken. Die bit-Muster, das Sie zeigen, sieht aus wie die UTF-8-Codierung für code-Punkt-basierend auf den 3 führenden1
bits im ersten byte, der angibt, ein 3-byte-Zeichen.