Bits "rausshiften"

Gast #3334433
Lesenswert?

Hallo, habe eine kurze Frage:

1
uint8_t opfer = 0b00000001;
2

3
void opfer(uint8_t win)
4
{ 
5
   win = opfer << 8;
6
}

Bei einer Größe von 8Bit würde der Leftshift bewirken, dass win=0 ist?

Werden die rausgeschobenen Zustände noch irgendwo gesichert oder sind 
sie beim Shiften sofort verschwunden?

MfG
Gast #3334449
Lesenswert?

> Bei einer Größe von 8Bit würde der Leftshift bewirken, dass win=0 ist?

Nein, undefiniert.

> Werden die rausgeschobenen Zustände noch irgendwo gesichert oder sind
> sie beim Shiften sofort verschwunden?

Nein, normalerweise(tm) kein Carry (und auch kein rotate).
Gast #3334483
Lesenswert?

Also nochmal zusammenfassend:

Der oben beschriebene Programmschnipsel mit einer expliziten uint8_t 
Deklaration würde Null ergeben und die "rausgeshifteten" Bits sind nicht 
mehr zu retten.

Treffen diese zwei Aussagen zu?
Gast #3334486
Lesenswert?

>Der oben beschriebene Programmschnipsel mit einer expliziten uint8_t
>Deklaration würde Null ergeben und die "rausgeshifteten" Bits sind nicht
>mehr zu retten.
>
>Treffen diese zwei Aussagen zu?

Ja, die ganze Funktion ist Blödsinn weil sie
sowieso wegoptimiert wird.

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