Zahl in Bits zerlegen

Hi,
indem du die Zahl maskierst
Code:
bit0=zahl&1;
bit1=zahl&2;
bit2=zahl&4;
usw.
Dann wird für das jeweilige Bit entweder 0 (nicht gesetzt) oder 1 (gesetzt) zurückgegeben.

Mfg

langer
 
So hat es aber die Folgende Bedeutung:
bitX == 0 => Kein Bit
bitX != 0 =>Ein Bit

Nach dem du die Zahlen maskiert hast, würde ich das Bit dann auch nach ganz rechts verschieben:
Code:
bit0=zahl&1;
bit1=(zahl&2)>>1;
bit2=(zahl&4)>>2;
nun ist bitX gleich 1 oder 0.

mfg
SGSSGene
 
Zuletzt bearbeitet:
Also irgendwie klappt das bei mir nicht.

Code:
int zahl;
	int bit0,bit1,bit2,bit3;

	cout << "Binärdarstellung einer ganzen Zahl! \n";
	cout << " Bitte geben Sie eine positive ganz Zahl ein: \n";
	cin << zahl;

	bit0=zahl&1;
	bit1=zahl&2;
	bit2=zahl&4;
	bit3=zahl&8;

	cout << bit3 << endl;
	cout << bit2 << endl;
	cout << bit1 << endl;
	cout << bit0 << endl;
 
Was bedeutet "klappt" nicht?
Wird das Programm nicht kompiliert?
Stürzt das Programm nach dem starten ab?
Ist Aufgabe nur unsinn?

mfg
SGSSGene
 
Vergessen die Fehlermeldungen mit zu posten.
Nur ein kleiner Ausschnitt, da er sich wiederholt.

Code:
"std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,char)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "std::istream" hergeleitet werden.

"std::basic_ostream<_Elem,_Traits> &std::operator <<(std::basic_ostream<_Elem,_Traits> &,const char *)": template-Argument für "std::basic_ostream<_Elem,_Traits> &" konnte nicht von "std::istream" hergeleitet werden.
 
Ganz übersehen.
Das war der Fehler.

Allerdings ist die Ausgabe bei eingegebener Zahl 12 -> 8400 oder 0000.
Dies müsste eigentlich 1100 sein.

Code:
bit0=zahl&1;
	bit1=zahl&2;
	bit2=zahl&4;
	bit3=zahl&8;
->8400

Code:
bit0=zahl&1;
	bit1=zahl&2>>1;
	bit2=zahl&4>>2;
	bit3=zahl&8>>3;
->0000
 
Code:
bit0=zahl&1;
	bit1=(zahl&2)>>1;
	bit2=(zahl&4)>>2;
	bit3=(zahl&8)>>3;
Mein Fehler, hab an die Operatoren Reihenfolge nicht gedacht, so sollte es gehen
 
Zurück