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

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