Forum: Compiler & IDEs Frage zu Schiebeoperation <<


von Patrick (Gast)


Lesenswert?

Hallo Zusammen

Wahrscheinlich hat diese Frage der Eine oder Ander schon mal hier 
gestellt, aber ich möchte sie doch noch einmal stellen. Mit dieser 
Operation:
1
1<<3;
schiebe ich eine 1 um 3 Stellen nach links. D.h. aus 0000 wird 0100.
Kann ich jetzt um eine Null zu schieben
1
0<<3;
schreiben? Gibt das dann aus z.B. 1111 --> 1011?

Danke für Eure Antworten.

Und bitte kein Verweis auf Bitmanipulation.

von Olli (Gast)


Lesenswert?

Nicht ganz.

mit
1
 1<<3
schiebst du eine 1 3 Stellen nach links. Eine 1 sieht vor dem Schieben 
allerdings so aus:  0001
daraus wird also 1000

mit
1
 0<<3
schiebst du eine 0 um 3 Stellen nach links. Nun sieht eine 0 aber so 
aus: 0000
wenn du das 3 Stellen verschiebst bleibt es immer noch 0000.

Was du meinst lässt sich so erreichen:
1
 0b11111110 << 3
Du gehst diesmal also von einer Zahl aus, die bereits eine 0 an letzer 
Stelle hat. Wenn du diese Zahl 3 Stellen nach links verschiebst bekommst 
du 11110111

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Olli wrote:

>
1
 0b11111110 << 3
> Du gehst diesmal also von einer Zahl aus, die bereits eine 0 an letzer
> Stelle hat. Wenn du diese Zahl 3 Stellen nach links verschiebst bekommst
> du 11110111

Nein, es wird 11110000 draus.  Auf der rechten Seite werden immer nur
Nullen nachgeschoben, eine Linksverschiebung einer vorzeichenlosen
Zahl entspricht exakt einer Multiplikation mit 2.

Bitmanipulation ist schon das richtige Stichwort, denn das ist die
einzige Möglichkeit, sowas zu erreichen:
1
~(1 << 3)

von Olli (Gast)


Lesenswert?

ups, joa da hascht recht... Ich sollte so früh am morgen nicht versuchen 
denken ;)

von Patrick (Gast)


Lesenswert?

Ach so!! Jetzt hab ichs kappiert. Danke für Eure Antworten!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.