Tobias22: Eine Frage zum Bitmuster

Beitrag lesen

Hi Martin,

erstmal vielen Dank für die ausführliche Antwort!

Ich habe den Eindruck, dass mir einfach Basisinformation fehlt, was überhaupt Bitmuster ist und ich das deswegen nicht verstehe.

in diesem Beispiel: Der Wert 1 = 0x00000001, in dem nur das Bit 0 gesetzt ist, wird um 31 Bitpositionen nach links verschoben, so dass am Ende das Bit 31 gesetzt ist und sonst keins.

Rein intuitiv wird der Wert für mich nach rechts verschoben.
Was ich meine: wir haben den Wert n=1 => 0000.0000.0000.0000.0000.0000.0000.0001

Er schadet nicht, aber ein einfaches if (z&mask) tut dasselbe und ist meiner Ansicht nach leichter zu lesen und zu begreifen.

Gut zu wissen!

Der Code ist unvollständig. Beispielsweise vermisse ich eine Operation auf i in der while-Schleife, denn der Wert von i muss irgendwo verändert werden, damit die Schleifenbedingung irgendwann mal nicht mehr erfüllt ist.

Der Code war natürlich unvollständig. Hier ist der vollständige:

void untprog1(int z)
{
    unsigned int mask = 01 << 31;
    int i = 31;
    while (i>=0)
    {
        if ((z&mask)!=0)
            printf("1");
        else
            printf("0");
        if((i%8==0) && mask!=1)
            printf(".");
        mask >>= 1;
        i--;
    }

Gruß Tobias