C variablen zusammensetzen

Gast #4291410
Lesenswert?

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
Gast #4291429
Lesenswert?

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
Gast #4291462
Lesenswert?

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
Gast #4291480
Lesenswert?

>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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren