Warum gibt es für Binärzahlen kein Literal?



  • Warum gibt es, wie z.B. in Java, fuer die binaere Darstellung von Zahlen kein Literal? Und warum sind Strings nicht standardmaessig UTF-8?



  • Gibt es, 0b in C++14.
    Und Strings können durchaus UTF-8 kodiert sein, mit u8-Prefix zwingt man das auch.



  • kommt mit C++14



  • Hört sich gut an. Wenn sich jetzt noch die Standard-Bibliothek in Richtung Qt immer mehr annähert, also Netzwerk, GUI etc. dann haben wir bald ein mächtiges Werkzeug für wirklich alles.



  • JavaFrager schrieb:

    Hört sich gut an. Wenn sich jetzt noch die Standard-Bibliothek in Richtung Qt immer mehr annähert, also Netzwerk, GUI etc. dann haben wir bald ein mächtiges Werkzeug für wirklich alles.

    Netzwerk ist bereits mehrfach proposed und wird hoffentlich bald kommen, GUI glaub ich nicht. Aber es ist ja kein Problem so etwas nachzuinstallieren.
    Insbesondere seit es solche Tools wie Biicode (biicode.com) gibt, da passiert das automatisch sobald sie eine Abhängigkeit erkennen.



  • Mit user-defined-literals und constexpr bekommt man sie aber auch schon in C++11, ist sowieso mächtiger, weil man dann gleich noch Dont-Care-Bits usw. implementieren kann, fast schon genauso komfortabel wie in VHDL&Co.



  • Ich denke es gibt bisher keine Binärliterale, weil die nicht so nützlich sind wie man vielleicht zuerst denkt. Erstens werden sie schnell sehr lang und sind dann nicht mehr lesbar, zweitens haben wir Hexadezimalliterale. Anscheinend ist es aber eine aussterbende Kunst, beim Hex-Lesen sofort Binär zu sehen, also brauchen wir jetzt vielleicht doch 0b.



  • Wers nicht kann, kann doch Oktalzahlen nehmen, die sollten keinen überfordern.
    Aber selbst wenn Oktallesen nicht auch ausgestorben wären, ich hab erst einmal Binärliterale gebraucht, und da tuts locker ein

    // 3         2         1
                                  //10987654321098765432109876543210
    BlaTyp const magic=0x208A2882;//00100000100010100010100010000010
    

    , daher halte ich 0b für nutzlos.

    Ob ich das heute noch so schreiben würde? Wohl kaum.

    Vielleicht für Bitboards beim Schachcomputerproggern nützlich?



  • Bashar schrieb:

    Ich denke es gibt bisher keine Binärliterale, weil die nicht so nützlich sind wie man vielleicht zuerst denkt. Erstens werden sie schnell sehr lang und sind dann nicht mehr lesbar, zweitens haben wir Hexadezimalliterale. Anscheinend ist es aber eine aussterbende Kunst, beim Hex-Lesen sofort Binär zu sehen, also brauchen wir jetzt vielleicht doch 0b.

    Von all den Features die mir bei C++ fehlen wäre 0b bei mir jetzt auch ziemlich weit unten in der Liste. 🤡



  • Ich denke, dass die Motivation für Könner zu betonen, dass sie eigentlich auch auf die Dezimalliterale verzichten könnten, ziemlich groß ist! Mit UTF haben sich jetzt zum Glück neue Möglichkeiten aufgetan, sich vom Pack abzuheben!



  • Teilweise ist es bei 8-bit ints wesentlich uebersichtlicher, wenn man direkt irgendwelche bitmasks verwenden kann, ohne sich mit hexadezimal oder bitgeschiebe herumzuschlagen.
    In C++ ist es relativ unnoetig, weil man fuer solche Faelle normalerweise veroderte enums nimmt, aber in Assembler z.B. fuer den shufps-Befehl, ist es doch ganz praktisch.
    Insgesamt habe ich lieber binaerliterale als octalliterale und besonders bei dieser Schreibweise mit der leading zero.



  • Marthog schrieb:

    Insgesamt habe ich lieber binaerliterale als octalliterale und besonders bei dieser Schreibweise mit der leading zero.

    Wird Zeit, konsistent zu 0X123 und 0B101 auch 0O123 zuzulassen und dabei 0123 zu deprecaten. 🤡



  • volkard schrieb:

    Marthog schrieb:

    Insgesamt habe ich lieber binaerliterale als octalliterale und besonders bei dieser Schreibweise mit der leading zero.

    Wird Zeit, konsistent zu 0X123 und 0B101 auch 0O123 zuzulassen und dabei 0123 zu deprecaten. 🤡

    Die Literale würden wenn schon 0x123 und 0b101 und 0o123 heissen. Aber Oktal braucht es heutzutage einfach nicht mehr in einer Zeit ohne 24-bit (oder 36-bit) Words.


Anmelden zum Antworten