Forum: Mikrocontroller und Digitale Elektronik inhalt von 2 vaiablen in eine übertragen


von Markus (Gast)


Lesenswert?

hallo,

habe zwei integer zahlen in zwei variablen, jeweils einstellig. ist es
möglich diese beiden einzelnenzahlen, i eine variable zu bringen.so
dass ich anstatt zwei variablen habe, in der z.b. die zahlen 1 und 2
sind dann eine variable habe,inder eine 12 ist?


gruß
Markus

von Hannes L. (hannes)


Lesenswert?

Sicher ist das möglich. Jedes Bit in einem Byte kann eine andere
Bedeutung haben. Wenn Du zwei "numerische Variablen" in einem Byte
(Char) unterbringen willst, dann kannst Du sie z.B. nibbleweise
organisieren, die eine nutzt das obere Nibble (4 Bit), die andere das
untere Nibble. Somit hat jede der beiden Variablen den Wertevorrat von
0 bis 15. Die Variable im unteren Nibble hat den korrekten Wert, die im
oberen Nibble hat den 16-fachen Wert. Durch Ausmaskieren (bitweises AND)
kann man die gewünschten Bits isolieren. Durch Bitschieben um 4 Stellen
(Multiplikation/Division mit/durch 16) erreicht man die Verschiebung
des Nibbles nach oben und zurück, mit der bitweisen OR-Verknüpfung
fasst man beide Nibbles zusammen.

...

von Markus (Gast)


Lesenswert?

wow,na dann schaue ich mal, wie ich es anders lösen kann. für den anfang
vielleicht doch ne stufe zu schwer.

von Läubi (Gast)


Lesenswert?

Stelle1= 1
Stelle2= 2

Zahl = Stelle1 * 10 + Stelle2

:)

von Hannes L. (hannes)


Lesenswert?

> Zahl = Stelle1 * 10 + Stelle2

Im Prinzip richtig, aber wenn mann "*10" durch "*16" ersetzt, dann
ist auch der Rückweg ohne Division (oder Subtraktion in Schleife)
möglich. Dann kann man nämlich mit schnellerem Maskieren und
Bitschieben arbeiten.

...

von Markus (Gast)


Lesenswert?

mhhh, scheint zu funktionieren. warum bin ich da nicht selbst drauf
gekommen? vielen dank.

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
Noch kein Account? Hier anmelden.