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.


Anmelden zum Antworten