Aus zwei Zahlen eine binäre erzeugen



  • Nanyuki schrieb:

    Xantus schrieb:

    Bit-Shifting geht zwar schneller, aber über ne union sollte es eigentlich auch zu lösen sein - steinigt mich, wenn ich falsch liege 🙂

    Welcher Datentyp war gleich nochmal 4 Bit breit?

    Oh, pardon. 🙂



  • typedef struct
    {
        unsigned _Nibble1  : 4;
        unsigned _Nibble2  : 4;
    }Einzelnibbles;
    
    union
    {
        Einzelnibbles E;
        unsigned char A;
    }AllesZusammen;
    

    Meinst du so was in der Art?



  • @Babbage&Xantus: Klar, funzt! 🙂

    Hab' jetzt beide Versionen durch'n Compiler geschoben, auf 'nem 16-BITter unterscheidet sich der ASM- Output bei voller Optimierung nur marginal, das Bitfield wird auch mit Shifts angesprochen.

    Der Tippaufwand rentiert sich also nur, wenn man mit den Nibbles mehr unternehmen mag, als sie einmal zusammenzubasteln 😉



  • hätte nich gedacht das diese geht mit den bitfeldern, durch padding...



  • BorisDieKlinge schrieb:

    hätte nich gedacht das diese geht mit den bitfeldern, durch padding...

    Wieso nicht? Bitfield ist Bitfield, das darf das Compilat nicht zerstören. 😃
    Padding und die reale Abbildung auf Bits und Bytes müssen Dich erst interessieren, wenn Du auf Hardware direkt zugreifst, logisch auf Sprachebene bleibt es aber immer konsistent.



  • Babbage schrieb:

    typedef struct
    {
        unsigned _Nibble1  : 4;
        unsigned _Nibble2  : 4;
    }Einzelnibbles;
    

    darauf, dass das nicht grösser als 8 bits wird, würde ich mich nicht verlassen.
    🙂



  • fricky schrieb:

    darauf, dass das nicht grösser als 8 bits wird, würde ich mich nicht verlassen.

    eben.. das meinte ich pointer crash 🙂



  • BorisDieKlinge schrieb:

    eben.. das meinte ich pointer crash 🙂

    Ahja, stimmt! Bin durch meine embedded- Compiler verwöhnt, die warnings ausgeben, wenn sie kein byte- alignment hinkriegen. 😉
    Ihr habt recht, Standard ist das nicht, daß Bitfields wirklich bitweise im Speicher einsortiert werden. Zu meiner Entschuldigung muß ich aber anführen, daß es mir in der Praxis nie anders untergekommen ist 🙄 .



  • kein problem;) oder arbeitest du mit nem 4Bit- cpu^^



  • BorisDieKlinge schrieb:

    kein problem;) oder arbeitest du mit nem 4Bit- cpu^^

    Ne, erstmal brauch' ich vier Bit, um mich an krude CPUs zu setzen. 😃
    Ohne Witz, die gibt's tatsächlich (SuperLowPowerLowCost von Mitsubishi, heute Renesas), mußte mal was für so eine Kiste machen, allerdings in Assembler und laaange her.
    Gottseidank 😉


Anmelden zum Antworten