Guten Tag, suche seit längeren eine möglichkeit aus drei Variablen eine einzige zu kreieren. Dazu muss man sich dass ganze so vorstellen.. Ich habe drei 8bit Variablen: uint8_t var0 = 4; uint8_t var1 = 9; uint8_t var2 = 1; Diese drei Ziffern möchte ich nun zu einer Variable zusammengefasst haben: uint16_t all = 491; Ich wähle eine 16bit variable da mit dem maximal Wert "999" die 16 bit nicht überschreitet werden können. Leider habe ich dazu nichts gefunden, brauche es aber später im AVR technischen. Ich hoffe Ihr könnt mir hierbei helfen ^^ . Grüße Umbrecht
Umbrecht schrieb: > Leider habe ich dazu nichts gefunden, in der schule nicht aufgepasst? uint16_t all = var0 * 100 + var1 * 10 + var2;
Natürlich kannst Du eine Variable aufteilen. Bist Du Dir aber sicher, dass die Ausgangsvariablen mitspielen, sprich sich an den möglichen Wertebereich halten? Eine 8-Bit Variable lässt sich z.B. in 2 + 3 + 3 Bit aufteilen. 2 Bit reichen für 0 ... 3 3 Bit reichen für 0 ... 7 Reichen diese Bereiche - kein Problem. Da das Verpacken und Entpacken recht aufwändig ist, ist die Anwendbarkeit sehr eingeschränkt. Eine 16-Bit Zahl könnte in 5 + 5 + 6 Bit separiert werden. 5 Bit reichen für 0 ... 31 6 Bit reichen für 0 ... 63
Amateur schrieb: > Natürlich kannst Du eine Variable aufteilen. Bist Du Dir aber sicher, > dass die Ausgangsvariablen mitspielen, sprich sich an den möglichen > Wertebereich halten? Hört sich sehr umständlich an, ist aber mit der 16bit option auch eine möglichkeit - danke :) Dieter schrieb: > Oder nach Horner-Schema: > (((var0 * 10) + var1) *10) + var2 oder so. thx :D
>Oder nach Horner-Schema: >(((var0 * 10) + var1) *10) + var2 Das hier gezeigte Horner-Schema ist nur sinnvoll, auf Basis von Dezimalstellen. Eine "natürliche" 8-Bit Zahl ist nur für 2 Stellen nutzbar. 2 X 4 Bit reichen von 0 bis 9 (bzw. 00 bis 99) oder von 0 ... F.
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.