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.
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 :-)
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.
wie gesagt: Klaus Wachtler schrieb: > Aber wer mit signed-Größen Bitschiebereien macht, hat es nicht anders > verdient :-)
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?
dito schrieb: > Ist das in C nicht eindeutig definiert? In C ist ja nicht mal sicher, daß man bei negativen Zahlen ein Zweierkomplement hat.
C99 zu >>: "If E1 has a signed type and a negative value, the resulting value is implementation-defined."
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.