MSPGCC, Shiftleft nicht mit 24 Stellen ?

Gast #1555195
Hallo,

bei mir gibt es mit dem MSPGCC Probleme, wenn im nachfolgenden Code der 
Wert von si grösser als ca. 20 ist.
Bei kleineren Werten von "si" klappt das ganze einwandfrei.

ui_tmp = ui_tmp + (1<<si);

Wenn ich den Wert von "ui_tmp" mit 65536 multipliziere (also um 16 
Stellen nach links schiebe), dann ergibt sich der richtige Wert, der 
Compiler kann so grosse Zahlen also verarbeiten.

Die betreffenden Variablen sind alle als "unsigned long" definiert.
Gast #1555208
aaaaah, danke.

Könnte sich da mit Typkonvertierung von 1 in (unsigned long) was machen 
lassen, z.B.

ui_tmp = ui_tmp + ( (unsigned log)1 <<si);

Habe das Projekt schon geschlossen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.