Forum: Compiler & IDEs Womit wird das Byte aufgefüllt?


von bit verschieber (Gast)


Lesenswert?

Hallo,
wie der Titel schon sagt, interessiert es mich wie das Byte nach dem 
Vorgang aussieht:

byte1 = 0000 0110

byte1 = byte1 << 4

daraus wird doch (wenn ich richtig denke):

byte1 = 0110 xxxx

was ich jetzt gerne wüsste, währe ob die x 0 oder 1 sind.

von Klaus W. (mfgkw)


Lesenswert?

0

> Bitte einen längeren Text eingeben.

von bit verschieber (Gast)


Lesenswert?

ok danke

von Klaus W. (mfgkw)


Lesenswert?

Aufpassen muß man allerdings beim Rechtschieben.

Je nach Sprache und Datentyp kann der Wert als vorzeichenbehaftet 
verstanden werden, dann wird z.B. bei C von links her mit 1 aufgefüllt, 
wenn das oberste Bit ("Vorzeichen") 1 war.
Aber wer mit signed-Größen Bitschiebereien macht, hat es nicht anders 
verdient :-)

von Stefan E. (sternst)


Lesenswert?

Klaus Wachtler schrieb:
> dann wird z.B. bei C von links her mit 1 aufgefüllt,
> wenn das oberste Bit ("Vorzeichen") 1 war.

Die meisten Compiler werden es wohl so machen, aber er könnte genauso 
gut mit Nullen auffüllen.

von Klaus W. (mfgkw)


Lesenswert?

wie gesagt:

Klaus Wachtler schrieb:
> Aber wer mit signed-Größen Bitschiebereien macht, hat es nicht anders
> verdient :-)

von dito (Gast)


Lesenswert?

Stefan Ernst schrieb:
> Die meisten Compiler werden es wohl so machen, aber er könnte genauso
> gut mit Nullen auffüllen.

Warum denn? Ist das in C nicht eindeutig definiert?

von Klaus W. (mfgkw)


Lesenswert?

dito schrieb:
> Ist das in C nicht eindeutig definiert?

In C ist ja nicht mal sicher, daß man bei negativen Zahlen ein 
Zweierkomplement hat.

von (prx) A. K. (prx)


Lesenswert?

C99 zu >>: "If E1 has a signed type and a negative value, the resulting 
value is implementation-defined."

von Klaus W. (mfgkw)


Lesenswert?

http://msdn.microsoft.com/en-us/library/336xbhcz%28v=vs.80%29.aspx

> The result of a right shift of a signed negative quantity is
> implementation dependent. Although Microsoft C++ propagates
> the most-significant bit to fill vacated bit positions,
> there is no guarantee that other implementations will do likewise.

PS: also sogar ohne C99 :-)

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.