[erledigt]Code Erklärung-Bitweise Verschiebung



  • Hallo c-plusplus Community.

    Bei mir mangelt es ein wenig am Verständniss eines Quellcodes. Es geht um das Bitweise Und. Darüber habe ich mir schon mehrere Erklärungen durchgelesen die sich damit befassten. Verstanden habe ich es auch. Im Grunde geht es mir nur um die Zeilen 17, 20 und 21. Die kann ich mir nicht erklären.

    void binary_print(unsigned int value)
    {
        unsigned int mask = 0xff000000;
        unsigned int shift = 256*256*256;
        unsigned int byte, byte_iterator, bit_iterator;
    
        for(byte_iterator=0; byte_iterator < 4; byte_iterator++)
        {
            byte = (value & mask) / shift;
            printf(" ");
            for(bit_iterator=0; bit_iterator < 8; bit_iterator++)
            {
                if (byte & 0x80)
                    printf("1");
                else
                    printf("0");
                byte *= 2; // Alle Bits um 1 nach links verschieben.
            }
        }
        mask /= 256; // Bits in maske um 8 nach rechts verschieben.
        shift /= 256; // Bits in shift um 8 nach rechts  verschieben.
    }
    

    Ich habe nachgeschaut und herausgefunden dass die Operatoren '<<' und '>>' für die Links- bzw. Rechtsverschiebung der Bits zuständig sind.
    Ist das jetzt das gleiche oder liege ich mit meiner Vermutung Falsch?

    Würde mich über ein paar Tipps, oder einen "Schubs" auf den richtigen Weg freuen.

    Viele Grüße.



  • Dann schau dir doch mal die Binär-Darstellung der Zahlen an.
    Z.B. die 1: 00000001
    und die 2: 00000010
    oder die 4: 00000100

    Wie du siehst ist die 1 immer um 1 Stelle nach links gewandert, der Wert hat sich immer verdoppelt (oder andersrum halbiert)

    __2 = 21 -> 1 Stelle verschieben
    256 = 28 -> 8 Stelle verschieben



  • Danke.
    Das muss ich mir jetzt zwar noch ein wenig durch den Kopf gehen lassen und es auf meinen Code übertragen, aber ich freue mich schon drauf wenn es *klick* macht :).


Anmelden zum Antworten