Gast
#5654837
Guten Abend, ich möchte ein Programm für einen Atmega Mikrocontroller schreiben, mit dem man große Fakultäten berechnen kann. Da ein jener Mikrocontroller nicht über eine riesige Menge an Speicherplatz verfügt, möchte ich nicht wie bei dem aktuellen Stand meines Programms pro Zahl ein Charakter-Array-Element verwenden, sondern möchte in jedes Charakter-Array-Element zwei BCD-codierte Zahl abspeichern. Ich verwende ein großes Array, um das Ergebnis jeder Multiplikation darin abzuspeichern und anschließend für die weitere Berechnung zu verwenden. Das Element 0 des Arrays ist meine niederwertigste Zahl und die Zahl vor meinem terminierenden '0xFF' ist die höchstwertigste Zahl. Mir fehlt nun leider der richtige Denkanstoß, wie ich korrekt die obere Hälfte und die untere Hälfte eines 8-Bit-Charakter anspreche. Ich überlegte mir dies mit bitweiser Verundung/Veroderung und mit Bitschiebeoperationen. Dies habe ich dann versucht und bin leider gescheitert. Gibt es eine einfachere Möglichkeit das mit den BCD-Zahlen zu realisieren? Ich brauche nur einen Denkanstoß bzw. ein kleines Beispiel. Vielleicht könnt ihr mich auch auf uneffektive Stellen in meinem Code hinweisen. Anbei mein Programm, dass ich für den Ablauf am PC etwas abgeändert habe(Ausgabe) (lauffähig für C++ Compiler) Mit freundlichen Grüßen LeDay
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |