Zahlenraum von Berechnungen

Gast #3839036
Lesenswert?
• ▲
▼
Hallo,
ich habe folgendes Problem:
Ich möchte einen BMP180-Drucksensor mit einem ATtiny 84A zum laufen 
bekommen. Leider muss man um die richtigen Werte zu bekommen ziemlich 
viel mit den internen Kalibrationswerten herumrechnen, und das klappt 
einfach nicht.
Zum Beispiel folgendes:

bmp180_cal.X2 = ((int32_t) bmp180_cal.MC * 2^11);

bmp180_cal.X2 ist vom Typ int32_t, bmp180_cal.MC ist -11786 und int16_t.
Ich erwarte ein Ergebniss von -24137728, es kommt jedoch -23577 heraus.
Die Berechnung sollte ja im größeren Zahlenbereich ausgeführt werden, 
also 32Bit. Also eigentlich kein Problem, oder? (2l statt 2 hilft auch 
nicht.)

Was mache ich falsch, ich komme einfach nicht drauf.
#3839051
Lesenswert?
• ▲
▼
Manchmal ist es auch vernünftig, nicht zu faul zu sein, sondern sich 
einen Taschenrechner zu schnappen und 2 hoch 11 selbst auszurechnen, 
wenn man schon nicht die Werte der 2-er Potenzen auswendig kennt.

2 hoch 11 ergibt 2048. Also einfach anstatt des Künstlens
1
   bmp180_cal.X2 = (int32_t) bmp180_cal.MC * 2048L;
und dann klappts.
Zugegeben, macht nicht soviel hier wie das Anschreiben als 2-er Potenz. 
Aber irgendwo muss man auch Abstriche machen. Im Gegenzug ist dafür die 
Operation selbst für Grundschulkinder leicht zu verstehen.

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.