Wie verarbeitet der PC nun tatsächlich Zahlen und sonst. Werte?



  • Hallo!

    In der ASCII-Tabelle besitzt Null (0) den dezimalen Stellenwert von 30. Wenn ich in meinem Code eine Operation: 0 + 1 durchführe, was macht mein PC dann wirklich? - 11110 (dez 30) + 11111(31)?
    Meine überlegung rührt daher, dass "\n" einen Integer-Wert von 0 hat. Wollte ich allerdings das Zeichen mit dem Wert 30 ausgeben, ist es ja die Null (0)...



  • Dieser Thread wurde von Moderator/in Nobuo T aus dem Forum ANSI C in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • blupp schrieb:

    In der ASCII-Tabelle besitzt Null (0) den dezimalen Stellenwert von 30.

    Da hast du dich wohl verguckt: "0" hat in der ASCII-Zeichensatztabelle den hexadezimalen Index 0x30 und damit den dezimalen Index 48.

    blupp schrieb:

    Wenn ich in meinem Code eine Operation: 0 + 1 durchführe, was macht mein PC dann wirklich? - 11110 (dez 30) + 11111(31)?

    Nein. In aller Regel sind 0, 1, 2 usw. wirklich auch genau das. Waere ja auch irgendwie fatal, wenn du einen Rechner haettest, bei dem 0 + 1 = 61 ergibt. 😉
    Diese Zuweisung 0x30 -> '0', 0x31 -> '1' ist im Rahmen des ASCII wirklich nur zur Kodierung der Zeichen bei der Ausgabe auf Bildschirm, Drucker, etc. gedacht.

    blupp schrieb:

    Meine überlegung rührt daher, dass "\n" einen Integer-Wert von 0 hat.

    Stimmt auch nicht. Das Zeichen '\n' ist dezimal 10, aber damit wirst du idR. so auch nichts rechnen wollen...



  • blupp schrieb:

    Hallo!

    In der ASCII-Tabelle besitzt Null (0) den dezimalen Stellenwert von 30. Wenn ich in meinem Code eine Operation: 0 + 1 durchführe, was macht mein PC dann wirklich? - 11110 (dez 30) + 11111(31)?
    Meine überlegung rührt daher, dass "\n" einen Integer-Wert von 0 hat. Wollte ich allerdings das Zeichen mit dem Wert 30 ausgeben, ist es ja die Null (0)...

    Ich weis ja nicht welche ASCII-Tabelle Du Dir zusammengebaut hast, aber in der offiziellen hat das Zeichen 0 immer noch den Zahlenwert 48 (dezimal) (bzw 30 Hex).

    Aber, die ASCII-Darstellung eines Zeichens hat nichts mit dem Zahlenwert eines INtegers zu tuen. Der Wert einer INtegervariablen ist halt, hmm, der Zahlenwert. Wenn die Variable den Wert 0 hat, dann ist das auch das Bitmuster 00000000.

    IM Fall von 0 + 1 ist das Bitmuster sowas wie 0x00000000 + 0x00000001



  • blupp schrieb:

    ...Wenn ich in meinem Code eine Operation: 0 + 1 durchführe, was macht mein PC dann wirklich?...

    Dann werden die beiden Zahlen, die als Binärzahlen gespeichert sind, addiert.
    Der Computer kennt ja nur Einsen und Nullen. Kannst ja mal googeln wie ein Halbaddierer und Volladierer funktioniert.
    http://www.elektronik-kompendium.de/sites/dig/0209031.htm


Anmelden zum Antworten