long short und schiften ...
-
hallo,
habe folgendes problem hoffe koennt helfen:ich muss in einem long 3 zahlen (ganzzahlig positiv) unterbringen welche einen wertebereich von 0 bis 20 haben.
der kleinste datentyp ist hierbei ushort der mir einfaellt.
dieser hat 2Byte.Da aber long nur 4 Byte hat muss ich von den drei ushort variablen nur die ersten byte in die long variable hineinschiften.
ich weiss nur nicht wie.bsp:
long ergebnis;
ushort s1=3, s2=19, s3=4;... wie nun s1 bis s3 in ergebnis reinbekommen???
(am besten gleich auch sagen wie ichs wieder rausbekomme :)))vielen dank.
gruss
-
der kleinste datentyp ist hierbei ushort der mir einfaellt.
dieser hat 2Byte.Mir würde noch unsigned char einfallen.
Ich halte aber nichts davon, in einer Variablen 3 Zahlen unterbringen zu wollen.
-
also ich hatte eigentlich nicht gefragt ob jemand was davon haelt was ich mache :), mir war nur wichtig wie ich das beschriebene mache:
der grund ist folgender:
ich muss waehrend einer task 3 zahlen sicher abspeichern. Sicher heisst hier in diesem fall, dass entweder alle drei zahlen oder garkeine abgespeichert werden sollen waehrend meines programms.
wenn ich nun diese drei zahlen einzeln abspeichere wuerde durch einen programmabbruch (warum auch immmer) nur ein teil abgespeichert werden.daher alle drei zahlen in ein long basteln das long rausschreiben und beim einlesen das long wieder auseinanderwusteln.
verstanden :)?
gruss
-
4Byte = 32Bit
Zahlen bis 20 Lassen sich in 5 Bit kodieren
-> 3 Zahlen = 3 * 5 Bit
Vorgehen, Zahl 1 nach Binär, 3* shift, Zahl 2 nach Binär, 3*shift, Zahl 3 Nach Binär
(Und dazwischen immer OR'en)
Gruss, Jochen