char-Speicherung
-
abend,
ich lese mir zurzeit das Buch "C von A bis Z" durch. Ich komme bei dieser Überlegung nicht weiter :
z. B:
char cvar = 'A'; --> Wird vom Compiler übersetzt in : char cvar = 65; Angeblich weil man keine richtigen Zeichen real speichern kann ( leider ohne Begründung : warum es nicht möglich ist ) . So dann dürfte es aber auch keine richtige var. geben , da es auch nicht möglich ist diese Zahlen so im A.speicher abzulegen ( alles ist aus 0en und 1en aufgebaut ) . Also ich bin wirklich verwirrt. Wieso gibt es keine Erklärung dazu , das gibts doch nicht..
-
Der Computer speichert tatsächlich alles nur in Form von 0en und 1en. Das ist aber nicht alles. In der Regel werden 8 dieser Bits nämlich zu einem Byte zusammengefasst (Ausnahmen bestätigen die Regel). Mit einem Byte lässt sich nun der Wertebereich von 0 (2^0-1) bis 255 (2^8-1) darstellen.
binär = dezimal 00000000 = 0 00000001 = 1 00000010 = 2 00000011 = 3 ... 11111111 = 255
Mit 2 Byte lässt sich entsprechend der Wertebereich von 0 bis 65535 (2^16-1) darstellen. Mit 4 Byte bis 2^32-1 und mit 8 Byte bis 2^64-1. C stellt einem nun verschieden große Datentypen zur Verfügung: char = 1 Byte, short = 2 Byte, long = 4 Byte. Um auch Zeichen zu speichern gibt es nun verschiedene Zeichensätze die jedem Zeichen einen Wert zuweisen. Z.B. den ASCII-Zeichensatz.
... 48 = '0' ... 57 = '9' ... 65 = 'A' ... 90 = 'Z' ...
Wenn der Computer jetzt den Wert 65 aus dem Speicher liest und der verwendete Datentyp - char - ihm sagt, dass er die Zahl als Zeichen interpretieren soll, dann gibt er ein 'A' aus. Gibst du den Wert jedoch als int aus bekommst du 65 angezeigt.