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; }