Bitausgabe richtige Datentypen nutzen



  • Hallo,
    ich möchte mir von einer beliebigen Zahl die Bitfolge ausgeben lassen und würde euch gerne Fragen ob die Methode dazu aufgrund der benutzten Datentypen sauber ist. Stichwort begrenzter Speicher

    int iValue = 100, i=0;
    char cBit[10];
    
    	while (iValue)
    	{
    		iBit[i] = iValue % 2;
    		iValue /= 2;
    		printf("%i ", iBit[i++]);
    	}
    

    Da mich nur die Einsen und Nullen interessieren war mein Gedankengang, dass ein Char-Array ja vollkommen ausreicht um diese von meinem int-Wert zu Speichen. Anschließend wird es dann wieder als int Formatiert ausgegeben.



  • 10 Zeichen für ein int reichen nicht.

    Du brauchst das Array aber auch nicht. Du kannst den Wert direkt ausgeben.
    Auch kannst du putchar statt printf nehmen.

    Das Verfahren funktioniert so nur für positive Werte. Daher wäre unsigned der bessere Typ für iValue



  • Danke schön,
    die 10 Elemente waren jetzt auch nur provisorisch, aber danke für den unsigned Tipp. Aber es wird sowieso vorher überprüft ob es sich um positive Werte handelt ^^.



  • So bekommst du das LSB links ausgegeben.

    In einem Stellenwertsystem steht die niederwertigste Stelle gewöhnlich rechts.


Log in to reply