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