Forum: Mikrocontroller und Digitale Elektronik Dezimalzahl in mehrere Arrays aufteilen


von Joe (Gast)


Lesenswert?

Hallo,
habe eine 6 Stellige Zahl und möchte diese je auf 3 Felder aufteilen. 
Wie mache ich das?

zum Beispiel:
123456

array[0] = 12;
array[1] = 34;
array[2] = 56;

Die Zahl kann halt immer anders sein, man muss wohl rotieren oder es mit 
einem pointer machen, hat jemand mal ein Beispiel bitte?

Danke schön
Mfg

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Joe schrieb:
> habe eine 6 Stellige Zahl und möchte diese je auf 3 Felder aufteilen.
> Wie mache ich das?
Woher kommt die Zahl?
Steht die in einer Variablen?
Müssen die Einer, Zehner, Hunderter... genau so aufgeteilt sein?
array[0] = 12;   //  *10000
array[1] = 34;   //  *100
array[2] = 56;   //  *1
Was willst du damit machen?

Bist du sicher, dass du weißt, was du willst?

von Joe (Gast)


Lesenswert?

Lothar Miller schrieb:
> Joe schrieb:
>> habe eine 6 Stellige Zahl und möchte diese je auf 3 Felder aufteilen.
>> Wie mache ich das?
> Woher kommt die Zahl?
Frei erfunden, will wissen wie das geht.
> Steht die in einer Variablen?
Ja
> Müssen die Einer, Zehner, Hunderter... genau so aufgeteilt sein?
Die Aufteilung ist wichtig, MAXIMAL 8 Bit in einem array
> array[0] = 12;   //  *10000
> array[1] = 34;   //  *100
> array[2] = 56;   //  *1
> Was willst du damit machen?
Will wissen wie das geht.
>
> Was willst du damit?
Will wissen wie das geht.
> Bist du sicher, dass du weißt, was du willst?
Ja, will wissen wie das geht.

von Chris M. (shortie)


Lesenswert?

123456 durch 10000 teilen und Stellen nach dem Komma streichen = 
array[0]
123456 modulo 10000 = 3456 (Rest für 1+2)
3456 durch 100 teilen und Stellen nach dem Komma streichen = array[1]
3456 modulo 100 = 56 = array[2]

von Karl H. (kbuchegg)


Lesenswert?

Joe schrieb:

> Ja, will wissen wie das geht.


Ganz einfach.

Eine Mutter hat 65 Äpfel und 10 Kinder.
Wenn alle Kinder gleich viele Äpfel bekommen, wieviele Äpfel kriegt dann 
jedes Kind und wieviele bleiben der Mutter übrig?


65 / 10  -> 6  und 5 bleiben Rest

Hmm, 65  zerlegt in 6 und 5, 65 zerlegt in 6 und 5, ....

Division kennst du in C, das ist der / Operator
Und der Rest einer Division, das ist %

   65 / 10   -> 6
   65 % 10   -> 5

Und das kannst du jetzt auf dein Beispiel anwenden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Joe schrieb:
> Die Aufteilung ist wichtig, MAXIMAL 8 Bit in einem array
Also, wenn das Byte MAXIMAL ausgenützt werden soll, dann ist deine 
Aufteilung in die Hunderterschritte ungünstig.
Denn dann werden von den 256 möglichen Zuständen (0..255) des Bytes nur 
100 (0..99) verwendet.

Am effektivsten wäre die Aufteilung dann in Bytes:
zahl = 123456;
array[0] = (zahl>>16) & 0xff;
array[1] = (zahl>>8) & 0xff;
array[2] = (zahl) & 0xff;


> Will wissen wie das geht.
Du könntest dir aber trotzdem die Mühe machen, meine Fragen durchzulesen 
und zu überdenken!!! (Ja, drei Ausrufezeichen!)

von Joe (Gast)


Lesenswert?

SOrry, aber glaub ich habs etwas schlecht erklärt.

Ich will die ersten beiden Stellen in einem Array haben, dann die 3te 
und 4te Stelle in einem weiteren Array und dann die letzten beiden in 
einem weiteren array.

Geht das nicht einer rotation? Teilen ist eigentlich rotieren oder?

von spess53 (Gast)


Lesenswert?

Hi

>Geht das nicht einer rotation? Teilen ist eigentlich rotieren oder?

Aber z.B. eine 123456 sieht in Bits so 11110001001000000 aus. So und 
jetzt rotiere mal.

MfG Spess

von Chris M. (shortie)


Lesenswert?

Liest du auch die Antworten und versuchst diese auch zu verstehen?

Rechne doch mal mein Beispiel nach. (Windows Taschenrechner auf 
Wissenschaftlich stellen)

von Karl H. (kbuchegg)


Lesenswert?

Joe schrieb:

> Geht das nicht einer rotation? Teilen ist eigentlich rotieren oder?

Nein, Teilen ist nicht rotieren.
Teilen ist Teilen.

Wenn du Teilen meinst, dann schreib auch erst mal Teilen.

Es gibt einen berühmten Spruch.
"Premature optimization is the root of all evil"
"Vorzeitige Optimierung ist die Wurzel allen Übels"

Du bist jetzt genau auf dem Trip. Du meinst etwas optimieren zu müssen 
(mittels Rotation), was du noch gar nicht in seiner vollen Tragweite 
verstehst. Sieh erst mal zu, dass dein Programm RICHTIG ist, ehe du dich 
fragst, ob man bestimmte Dinge SCHNELLER machen kann. Ein korrektes 
Programm, welches langsam ist, ist immer noch ein nützliches Programm 
(weil korrekt). Aber ein fehlerhaftes Programm, das sauschnell ist, ist 
zu nichts zu gebrauchen.

von Joe (Gast)


Lesenswert?

Gut danke.

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.