bool bitweise auslesen



  • Hallo, habe gerade etwas witziges bemerkt:
    ein bool belegt 1 byte speicher, also 8 bit statt den benötigtem einen bit.
    lustig finde ich, dass wenn man ein true auf bitebene auseinander nimmt 8 nullen findet! gleiches bei false!
    wie kann das sein?
    hab ich was falsch gemacht?

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	bool test;
    
    	test=true;
    	for (int i=0; i<sizeof(bool)*8; i++)
    	{
    		cout << (test&(1<<(sizeof(bool)*8-i)));
    	}
    	cout << endl;
    
    	test=false;
    	for (int i=0; i<sizeof(bool)*8; i++)
    	{
    		cout << (test&(1<<(sizeof(bool)*8-i)));
    	}
    	cout << endl;
    }
    


  • Lass den Index von 1 bis 8 laufen.



  • hihi,

    du musst jedes Bit mittels einer AND-Verknüpfung herausziehen, und dann noch nach rechts schieben.

    #include <iostream>
    using namespace std;
    
    int main()
    {
        int test = 0x55;
    
        for(int i=0, u=1; i<(sizeof(test)*8); i++)
        {
            cout << " " << ((u&test)>>i); // lsb wird zuerst ausgegeben...
            u = (u<<1);
        }
    
        system("pause>nul");
        return 0;
    }
    


  • seldon schrieb:

    Lass den Index von 1 bis 8 laufen.

    ahh, kam mir schon seeeehr komisch vor...
    *schäm*
    so geht es:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    	bool test;
    
    	test=true;
    	for (int i=0; i<sizeof(bool)*8; i++)
    	{
    		cout << (test&(1<<(sizeof(bool)*8-i-1)));
    	}
    	cout << endl;
    
    	test=false;
    	for (int i=0; i<sizeof(bool)*8; i++)
    	{
    		cout << (test&(1<<(sizeof(bool)*8-i-1)));
    	}
    	cout << endl;
    }
    

Anmelden zum Antworten