Frage zu Schiebeoperation <<

Gast #912342
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.
Gast #912355
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
Moderator Persönliche Seite #912359
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)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren