Hallo, ich möchte gerne eine 32bit signed Variable auf 4 8bit unsigned Variablen aufteilen, dabei soll das Vorzeichen im höchstwertigen Byte so wie in der signed Variable auftauchen. Also das ganze Bitmuster soll erhalten bleiben! Das ganze soll also so aussehen 32bit: 10000000 00000000 00000000 00000011 = -3 1.byte 2.byte 3.byte 4.byte 8bit: 10000000 00000000 00000000 00000011 wert: 128 0 0 3 Wie lässt sich das sinnvoll realisieren? Grüße aus Kassel, Andreas
Stichwort: union
PS:
>10000000 00000000 00000000 00000011
ist nicht -3, sondern -2'147'483'645 !
(also drei vorm Überlauf)
die 32bit Variable soll natürlich signed sein! Da verstehe ich nicht, warum sie 3 vorm Überlauf sein soll! Das höchstwertige bit in einer signed Variable gibt doch das Vorzeiche an, oder habe ich da was falsch verstanden?
Andreas wrote: > die 32bit Variable soll natürlich signed sein! Da verstehe ich nicht, > warum sie 3 vorm Überlauf sein soll! > > Das höchstwertige bit in einer signed Variable gibt doch das Vorzeiche > an, oder habe ich da was falsch verstanden? Negative Zahlen werden im 2-er Komplement dargestellt. http://de.wikipedia.org/wiki/Zweierkomplement
>Das höchstwertige bit in einer signed Variable gibt doch das Vorzeiche >an, oder habe ich da was falsch verstanden? Korrekt. Ich sollte vielleicht besser "Unterlauf" sagen. 11111111 11111111 11111111 11111111 => -1 11111111 11111111 11111111 11111110 => -2 ... 10000000 00000000 00000000 00000011 => -2'147'483'645 10000000 00000000 00000000 00000010 => -2'147'483'646 10000000 00000000 00000000 00000001 => -2'147'483'647 10000000 00000000 00000000 00000000 => -2'147'483'648 00000000 00000000 00000000 00000000 => 0 00000000 00000000 00000000 00000001 => +1 ... 01111111 11111111 11111111 11111111 => +2'147'483'647
Ok danke, da wusste ich nur die Hälfte, kein Wunder das bei mir nichts funktioniert hat! Vielen Dank an euch!
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.