Shift Operator

Mikrowelle

Bekanntes Mitglied
Hallo

Für eine Integer Eingabe die eine Binärdarstllung sein soll (int x = 10101010) muss ich rausfinden ob an einer Stelle eine 1 ist oder nicht.

Dafür darf ich nur shift und logische Operatoren benutzen.

Nach Stunden von versuchen gebe ich langsam auf.

Für die eingabe (10, 1) soll false rauskommen da an der ersten Stelle 0 steht.
Für die Eingabe (01, 1 ) soll true rauskommen da an der ersten stelle 1 steht.

Wie soll ich den bei einem Integer rausfinden welche Ziffer fanz rechts steht wenn ich nur
Shift und logische Operatoren benutzen darf ?


Vielen Dank

Janina
 
Zuletzt bearbeitet:
Was mri spontan einfällt wäre, den int so weit nach rechts zu shiften, dass nur noch ein bit übrig ist und dann wieder zurückzushiften und den Rest dabei mit 0 aufzufüllen.
Beispiel: 32bit int
((int << 31) >> 31) == 1

Hierbei musst du nur bei den bitoperatoren aufpassen, da einer mit 0 auffüllt und der andere mit dem letzten bit.
 
Du könntest aber auch die 1 shiften und das int unberührt lassen.
So kannst du auch jede Stelle überprüfen, musst nur wissen wann du genug geshiftet hast 🙂
 
Problem ist, wenn er dann ne 2 oder 3 übergeben bekommt, geht das nicht. Wenn, dann müsste er selbst 1 als Maske nehmen. An der Stelle weiß ich nicht, ob das nicht evtl. nicht Teil der Aufgabe ist.
 

Zurück
Oben