long int Konstante möglich?

Gast #1303808
Lesenswert?
• ▲
▼
Hallo,

ich habe einen Atmega16 zur Verfügung und habe noch nicht allzu große 
Erfahrungen mit µC Programmierung. Ist es möglich mit diesem 8-bit 
Controller Rechenoperationen der folgenden Art durchzuführen:

#define PI = 3.14....


....

long int const = 10000000000;
y(i) = cos(2*PI*x(i)*(x(i)/const));

....


Oder sprengt die Konstante 10000000000 den Rahmen des 8 Bit Controllers? 
Ich meine das long int Format sollte doch mit der Zahl umgehen können, 
oder?

Danke für Eure Hilfe.

mfg


Chris
#1303819
Lesenswert?
• ▲
▼
Mädchen für alles schrieb:
> Hallo,
>
> ich habe einen Atmega16 zur Verfügung und habe noch nicht allzu große
> Erfahrungen mit µC Programmierung. Ist es möglich mit diesem 8-bit
> Controller Rechenoperationen der folgenden Art durchzuführen:
>
> #define PI = 3.14....
>
>
> ....
>
> long int const = 10000000000;
> y(i) = cos(2*PI*x(i)*(x(i)/const));
>
> ....
>
>
> Oder sprengt die Konstante 10000000000 den Rahmen des 8 Bit Controllers?
> Ich meine das long int Format sollte doch mit der Zahl umgehen können,

Nein, das ist 0x2540be400 und damit gerade mehr als 4 Byte lang.

Und const ist ein reserviertes Schlüsselwort.


> oder?

Oder so:
1
  uint64_t c1 = 10000000000ull;
2
  int64_t  c2 = 10000000000ll;

> ...

Ob es nötig und sinnvoll ist, auf einem AVR mit solchen Zahlen zu
hantieren, sei mal dahingestellt.
Danach hattest du ja nicht gefragt.
Gast #1303824
Lesenswert?
• ▲
▼
Die AVR's rechnen intern mit 8-Bit. Das macht aber erst einmal nichts, 
die zum avr-gcc-gehörige mathe-lib bringt die Grundrechenarten bis 32 
Bit mit.

Ein long beim avr-gcc hat dabei 32 bit, ein int 16 bit.

Da aber 10000000000 nicht in einen 32-bit-int passt, wird es 
schwieriger. Es gibt im Netz Code für mathelibs mit 64-Bit-Arithmetik, 
damit wird es dann gehen, nur halt nicht sonderlich schnell.

Oliver

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.