Forum: Mikrocontroller und Digitale Elektronik ASCII und Festkomma-Arithmetik


von ASCII (Gast)


Lesenswert?

Sagt mal, weil der Artikel zur Festkommaarithmetik gerade auf der 
Webseite erschienen ist:

Wäre es nicht bei der Definition des ASCII-Codes sinnvoller gewesen, die 
Ziffern 0 bis 9 auf die ersten zehn Positionen des ASCII-Codes zu legen?

Dann hätte man bei jeder Zahl einfach nur die Modulo-10-Operation 
gehabt, und hätte sofort die jeweils letzte Ziffer als solche senden 
können.


Gibt es etwas, was dagegen spricht, bzw. Nachteile, die ich mir damit 
einfange?

von Peter II (Gast)


Lesenswert?

ASCII schrieb:
> Gibt es etwas, was dagegen spricht, bzw. Nachteile, die ich mir damit
> einfange?

wo soll der Vorteil eines Modul gegenüber einer Division sein?

und eine \0 ist ein C sehr unpraktisch.

von Rene S. (Firma: BfEHS) (rschube)


Lesenswert?

Sag mal, kommst du nicht über ein halbes Jahrundert zu spät :-)

"Die ASCII-Kodierung wurde am 17. Juni 1963 von der American Standards 
Association (ASA) als Standard ASA X3.4-1963 veröffentlicht..."

http://de.wikipedia.org/w/index.php?title=American_Standard_Code_for_Information_Interchange&redirect=no#ASCII-Tabelle

von 0815 (Gast)


Lesenswert?

ASCII schrieb:
> Dann hätte man bei jeder Zahl einfach nur die Modulo-10-Operation
> gehabt, und hätte sofort die jeweils letzte Ziffer als solche senden
> können.

So schlimm ist ein bitweises OR mit 0x30 nun auch nicht.

von Amateur (Gast)


Lesenswert?

>Wäre es nicht bei der Definition des ASCII-Codes sinnvoller gewesen, die
>Ziffern 0 bis 9 auf die ersten zehn Positionen des ASCII-Codes zu legen?

Ich gehe mal davon aus, dass Du zum Zeitpunkt der Festlegung noch kein 
Stimmrecht hattest.

Deine Frage geht am Kern der Sache (Grund und Aufbau des Codes) vorbei 
und fällt mit Sicherheit in die Rubrik: Hinterher sind alle schlauer.

von Falk B. (falk)


Lesenswert?

@ Autor: ASCII (Gast)

>Wäre es nicht bei der Definition des ASCII-Codes sinnvoller gewesen, die
>Ziffern 0 bis 9 auf die ersten zehn Positionen des ASCII-Codes zu legen?

Nö.

>Dann hätte man bei jeder Zahl einfach nur die Modulo-10-Operation
>gehabt, und hätte sofort die jeweils letzte Ziffer als solche senden
>können.

Wo ist das Problem, einfach 0x30 zu addieren?

>Gibt es etwas, was dagegen spricht, bzw. Nachteile, die ich mir damit
>einfange?

In C ist 0x00 der Stringterminator und damit als Zeichen in einem String 
nicht nutzbar. OK, ASCII ist deutlich älter als C, aber auch damals hat 
man sich um das Thema Steuerzeichen und normale Zeichen ne Menge 
Gedanken gemacht.

von Thomas E. (thomase)


Lesenswert?

ASCII schrieb:
> Gibt es etwas, was dagegen spricht, bzw. Nachteile, die ich mir damit
> einfange?

Das Zeichen NUL, was allgemein Nichtstun bedeutet, würde Strom 
verbrauchen. Denn dieser Zustand hätte dann logischerweise nicht mehr 
den Code 0x00 sondern irgendeinen anderen.

Das ist heutzutage natürlich vollkommen egal. Einem µP oder µC ist es 
allerdings auch egal, ob er das Zeichen mit 0x30 verknüpft.

Aber 1963 und weit darüber hinaus gab es auch Maschinen, die Codes 
mechanisch, z.B. mit Elektromagneten, abgetastet haben. Der Zustand NUL 
mit  dem angenommenen Code 0x10, hätte dann bedeutet, dass der Magnet #4 
im Leerlauf ständig angezogen sein müsste. Das hätte unnötig Strom 
verbraucht und wäre der Lebensdauer der Magnetspule abträglich gewesen.

Natürlich hätte man die Abtastung auch invertieren können, damit die 
Relais bei einer 0 anziehen. Dann hätte man die NUL auf 0x7F legen 
können. Damit wäre der Code aber nach oben nicht mehr erweiterbar 
gewesen. Oder man hätte das gleiche Problem mit 8 Bit mittendrin im 
Zeichensatz wieder gehabt.

Ausserdem ist ein ungestanzter Lochstreifen leer, also NUL. Wäre NUL 
aber 0x10, müsste man bei jedem Zeichen, bei dessen Code Bit4 0 ist, das 
Loch zustopfen. Denn dieses Bit, müsste auf dem "leeren" Lochstreifen 
gestanzt sein, damit die Maschine diesen auch als "leer" erkennen kann.

mfg.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.