Programm: Dezimal in Binär umrechnen



  • Mein code ist schon schlimm genug, aber den kann man wenigstens noch nachvollziehen ohne kryptische Konzepte zu kennen. Hoffentlich.

    EDIT:
    Und wenn ich Mod oder gar Global-Mod bin (verkürzt: GoD), dann kann ich fast alles. Zumindest ne Menge.

    Ist Alles nicht so tragisch.



  • Hm. Was muss man für die letzte Version wissen?

    _(I){I&&_(I/2),putchar(48|I&1);}main(){_(3001);}
    

    - implizit int bei Parametern
    - implizit extern returning int bei undeklarierten Funktionen
    - Kommaoperator
    - logische Operatoren (short-circuit evaluation)
    - bitweise Operatoren (inkl. soweit nachdenken, daß gerade Zahlen (48) binär eine 0 am Ende haben 😃 )
    - Operatorprioritäten

    eigentlich alles Basics? 🤡

    SeppJ schrieb:

    Aber die verdammte Operatorpriorität lässt mich elend viele Klammern setzen, damit das Ergebnis stimmt.

    Genau darum hab ich die Richtung aufgegeben.


  • Mod

    Swordfish schrieb:

    eigentlich alles Basics? 🤡

    Ich würde eher sagen: 100% Non-basics, außer I/2 🙂 .



  • Klammern setzen schadet nie. Wenn es auch nur dafür gut ist, die eigenen Gedanken zu sortieren bzw. zu strukturieren oder den code für Andere lesbarer zu machen.



  • Das mit den Klammern würd' ich mir nochmal überlegen: https://www.cise.ufl.edu/~manuel/obfuscate/spinellis 😃



  • Swordfish schrieb:

    Hm. Was muss man für die letzte Version wissen?

    _(I){I&&_(I/2),putchar(48|I&1);}main(){_(3001);}
    

    Hihi, da wird Dulfried einen Riesenspaß haben, daß zu erklären was du um 1/2 2² zusammengebastelt hast.

    Noch eine Frage: was macht die ":2;" hier?

    o(O){O?o(O/2),write(1,"01"+(O&1),1):2;}main(){o(3001);}
    

    Die 2 kapier ich auf Anhieb nicht.



  • EOP schrieb:

    da wird Dulfried einen Riesenspaß haben, daß zu erklären was du um 1/2 2² zusammengebastelt hast.

    Nene, danken muss er schon SeppJ. Er hat den klassischen _(){}main(_();) -ioccc-Weg eingeschlagen. Ich war höchstens Mittäter.

    EOP schrieb:

    Noch eine Frage: was macht die ":2;" hier?

    o(O){O?o(O/2),write(1,"01"+(O&1),1):2;}main(){o(3001);}
    

    garnix 😃



  • Swordfish schrieb:

    garnix 😃

    Fies. Muss mal bei Gelegenheit kucken, wie das der Compiler umsetzt.



  • Hoffentlich nur mit ret .



  • Swordfish schrieb:

    und ich wollt grad zu SeppJ sagen, daß wir lieber aufhören sollten, weil sonst EOP nie wieder mit uns spielen mag 🤡

    Keine Sorge.
    Lerne was ^ stirb dumm.
    Und weil ^ reversibel ist:
    Lerne nix & stirb trotzdem dumm. 🙂


Anmelden zum Antworten