c++ Anfänger brauch Hilfe bei einen Problem.



  • @hustbaer sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    einfach die ASCII-Darstellung von 0 abziehen

    Einfach '0' abziehen.



  • Ja, hast ja Recht. Wobei es meistens ein ASCII-kompatibles Encoding sein wird.


  • Mod

    @hustbaer sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    Ja, hast ja Recht. Wobei es meistens ein ASCII-kompatibles Encoding sein wird.

    Wird sogar explizit im Standard gefordert, dass das Encoding diese Eigenschaft haben muss. Leider trifft das nur auf Ziffern zu, nicht auf das Alphabet.

    In both the source and execution basic character sets, the value of each character after 0 in the
    above list of decimal digits shall be one greater than the value of the previous.

    Zum Glück hat wohl jedes reale Encoding diese Eigenschaft, selbst das berühmt berüchtigte EBCDIC.

    Wobei ich mich gerade frage, warum diese Eigenschaft auch vom Source Character Set gefordert wird. Zugeständnis an die armen Compilerbauer?


  • Mod

    @SeppJ sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    Zum Glück hat wohl jedes reale Encoding diese Eigenschaft, selbst das berühmt berüchtigte EBCDIC.

    Man kann sich doch immer auf IBM verlassen. Beim zufälligen Herumklicken auf Wikipedia habe ich doch tatsächlich eine Ausnahme gefunden.
    Ich präsentiere: IBM 704 Fortran Code (und andere Abwandlungen von BCD auf der gleichen Seite)
    😟
    Wobei der auch sonst nicht die Anforderungen an C++ erfüllt, da Kleinbuchstaben und viele Sonderzeichen fehlen. Aber wenn man länger sucht, wird man gewiss etwas finden.



  • @SeppJ
    Ja, zusammenhängend muss 0-9 für C++ schon sein, aber es muss '0' nicht 48 sein wie in ASCII. Daher wäre es falsch ch - 48 zu schreiben (also die "ASCII-Darstellung von 0 abziehen" wie ich geschrieben habe). ch - '0' dagegen ist richtig. Weil man dann die Representation im execution-character-set bekommt - die eben nicht 48 sein muss.



  • @SeppJ sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    Man kann sich doch immer auf IBM verlassen. Beim zufälligen Herumklicken auf Wikipedia habe ich doch tatsächlich eine Ausnahme gefunden.
    Ich präsentiere: IBM 704 Fortran Code (und andere Abwandlungen von BCD auf der gleichen Seite)

    704 sieht OK aus. Aber einige der anderen Codepages auf der Seite haben tatsächlich die 0 hinter der 9. Krass.


  • Mod

    @hustbaer sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    704 sieht OK aus. Aber einige der anderen Codepages auf der Seite haben tatsächlich die 0 hinter der 9. Krass.

    Argh, ich meinte 716! Wo vor der 1 ein * ist und nach der 9 ein =, und die 0 ist gaaaanz weit weg. Das hat mich schockiert. Da ist bestimmt eine richtig interessante Erklärung dahinter, die niemand mehr kennt oder aufgeschrieben hat. Wikipedia hebt bei 704 hervor, dass die 0 an der passenden Stelle ist, aber ich finde keine Erklärung, warum das bei 716 anders ist. Es steckt wahrscheinlich in diesem Satz "The straightforward translation from punched form would place the blank before digits 1–9, and encode 0 somewhere else entirely.", aber ohne Hintergrundwissen über Lochkarten verstehe ich das halt nicht!



  • @SeppJ sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    Argh, ich meinte 716! Wo vor der 1 ein * ist und nach der 9 ein =, und die 0 ist gaaaanz weit weg. Das hat mich schockiert. Da ist bestimmt eine richtig interessante Erklärung dahinter, die niemand mehr kennt oder aufgeschrieben hat. Wikipedia hebt bei 704 hervor, dass die 0 an der passenden Stelle ist, aber ich finde keine Erklärung, warum das bei 716 anders ist. Es steckt wahrscheinlich in diesem Satz "The straightforward translation from punched form would place the blank before digits 1–9, and encode 0 somewhere else entirely.", aber ohne Hintergrundwissen über Lochkarten verstehe ich das halt nicht!

    Schau Dir einmal die Telex Kodierung an, da wird es erst richtig spaßig, da sind die Ziffern faktisch nicht mehr beisammen bzw. am Anfang gab es gar keine Ziffern.


  • Mod

    Wunderschön! So etwas hatte ich gesucht. Ich hatte schon an Morsecode gedacht, aber da kann man ja nicht wirklich sinnvoll eine Ordnung definieren. Hier ist ein wunderschönes Mittelding aus der mechanischen und der Digitalelektronikzeit. Hier führen mechano-ergonomische Überlegungen zu scheinbar sinnlosem Durcheinander, hinter dem aber trotzdem sehr viel Methode steht. 👍

    Es fehlen wieder die geforderten Kleinbuchstaben, aber wenn man die verfügbaren Sonderzeichen passend definiert könnte der Rest sogar ausreichend für die Anforderungen von C++ sein. Außer natürlich der Ordnung der Ziffern.

    Apropos Sonderzeichen: Da sind ja erstaunlich viele (Halb-)Brüche drin, dafür dass man nur 5 Bit zur Verfügung hat. Hat man früher so viele Brüche per Fernschreiben verschickt? Muss sich ja gelohnt haben, ein Viertel der Codepage zu belegen, um hier und dort mal ein "Byte" zu sparen.



  • @SeppJ sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    Apropos Sonderzeichen: Da sind ja erstaunlich viele (Halb-)Brüche drin, dafür dass man nur 5 Bit zur Verfügung hat. Hat man früher so viele Brüche per Fernschreiben verschickt? Muss sich ja gelohnt haben, ein Viertel der Codepage zu belegen, um hier und dort mal ein "Byte" zu sparen.

    Glaube nur in der britischen Variante, oder? Schau dir mal an, wie in England Preise notiert wurden, bevor 1971 eine Dezimalwährung eingeführt wurde: https://www.ghostofthedoll.co.uk/retromusings/wp-content/uploads/2016/07/Toys-03.jpg

    Das könnte eine plausible Erklärung sein.


  • Mod

    @Finnegan sagte in c++ Anfänger brauch Hilfe bei einen Problem.:

    Das könnte eine plausible Erklärung sein.

    Klingt nachvollziehbar.


Anmelden zum Antworten