Woher "weiß" der Computer, ob jetzt Zahlen oder Text ausgegeben werden?
Beispielsweise:
Der Binärcode für A lautet 01000001
01000001 ergibt aber auch die Zahl 65.
Woher "weiß" der Computer nun, ob er nun die Zahl 65 oder "A" ausgeben muss?
Danke im Voraus
10 Antworten
Hi jojojo5433
die bisherigen Antworten könnten missverstanden werden. Ich pack mal ein bisschen mehr Redundanz aussendrum
- du hast recht, 01000001 = 65. Natürlich in binärer Schreibweise
- Das Gleiche steht für "A", aber nicht weil der Computer was damit macht, sondern weil das große "A" in der ASCII-Tabelle (kann man googeln) an der 65ten Stelle steht.
Wenn du in der Antwort mit den printf(...)-Befehlen guckst, siehst du, dass genau nach diesem Prinzip eine Zahl mal als Buchstabe oder als Zahl (oder...) interpretiert werden kann. je nach Bedarf.
Die Repräsentation von Zahlen, Ziffern, Text und auch allem anderen im Computerumfeld ist niemals kontextlos. Sämtliche Daten werden im Kontext gespeichert und kompiliert, weil sie Teil eines Programmes sind. Teil dieser Speicherung ist die Speicherung als Datentyp.
Der Buchstabe A wird binär als 01000001 codiert, aber nicht alleine dastehen. Davor und danach folgen Start- und Endzeichen und die Definition, dass es als String codiert ist (am Ende auch alles binär kodiert). Bestimmte binäre Zeichenfolgen dienen hierbei als Trenner und Markierungen drum herum.
Die Zahl 65 würde allerdings mit "00110110 00110101" als Datentyp String kodiert, da hierfür keine reine Dezimal zu Binärkodierung herangezogen wird, sondern die ASCII-Tabelle (wie auch beim Buchstaben A).
Wenn der Datentyp allerdings ein Zahlentyp (zum Beispiel Integer) ist, dann würde die Codierung 01000001 stimmen.
Aber durch den Kontext (wie oben beschrieben) ist dem Computer glasklar, ob es eine 65 oder ein A ist.
Wenn Du mit "ausgeben" meinst "darstellen auf dem Bildschirm", dann wird das von irgendeinem Programm gemacht, das festlegt, ob die verwendete Speicherstelle nun als Zahl oder als Zeichen zu interpretieren ist. In der Praxis abstrahiert das Programm aber ohnehin vollständig von der Repräsentation auf Speicherebene, der Programmierer überläßt es dem Compiler und dem Betriebssystem dafür zu sorgen, daß die Daten, die er auf Programmebene als Zahl oder Zeichen verwendet, auch passend gespeichert sind.
Nehmen wir an, die 8-Bit-Zahl z enthält die Bits 01000001.
Dann passiert bei den Ausgabeanweisungen (z.B. in Programmiersprache C) folgendes:
printf("%c", z) gibt ein A aus
printf("%d", z) gibt eine 65 aus
Das erste Argument von printf gibt an, wie etwas auszugeben ist (%c = Text-Zeichen, %d = Dezimalzahl).
Das zweite Argument gibt an, was auszugeben ist. Das ist hier wirklich dieselbe Zahl, nämlich 01000001.
Er liest die Bits ja nicht ohne weiteres ein. Es gibt immer eine Anweisung davor.