Re: Umgang mit den LONGSs Kategorie: Programmierung C (von ulrich korth - 15.11.2010 15:45) | ||
Als Antwort auf Re: Umgang mit den LONGSs von jo - 15.11.2010 12:51 | ||
| ||
> > > > Hallo Peter, als einer der ersten, die auf LONGs gehofft haben, möchte ich mich erst mal für deren > > > > Implementierung bedanken. Ich habe am Wochenende das alte Projekt von float auf long umgestellt > > > > und nun läuft es alles in der erfoderlichen Performance. Super, danke. > > > > > > > > Darf ich dich zum Handling der longs noch um ein paar Kommentare bitten > > > > -> Ausgabe auf LCD über Str_Printf( str, "%0l9d", longwert); > > > > dann Ausgabe über str am Display? > > > > > > > > EEPROM, > > > > > > > > unsigned long l; > > > > float f; > > > > word wh, wl; > > > > > > > > /* geht nicht > > > > l = 1234567890; > > > > f = (float)l; > > > > l = 0l; > > > > l = (unsigned long)f; > > > > */ > > > > > > > > l = 0xFEDCBA98; > > > > wh = l >> 16; > > > > wl = l & 0xffff; > > > > > > > > l = 0; > > > > > > > > l = (wh << 16ul) + wl; // geht nicht > > > > l = (wh << 16ul); // geht auch nicht > > > > > > > > l = wh * 65536ul + wl; // aber das geht > > > > > > > > l = l & 0x0fffffff; // auch OK > > > > > > > > > > > > --> Workaround über zwei words... > > > > > > > > Danke und Grü�e > > > > > > > > Jo > > > > > > > > > > Hallo Jo, > > schau mal auf den gänderten Programmteil > > Gruss Ulrich > > > > unsigned long l; > > float f; > > word wh, wl; > > > > l = 1234567890; //wo ist das Problem??kein Problem nur der Code zum Test > > // f = (float)l; solche cast Operatoren gibt es (noch?) nicht in Compact-C > > l = 0l; > > // l = (unsigned long)f; " > > > > l = 0xFEDCBA98; > > wh = l >> 16; > > wl = l & 0xffff; > > > > l = 0; > > > > l = (wh << 16ul) + wl; // geht nicht das ist schon OK, denn (wh << 16) ist 0 > --> Ich hätte erwartet, dass l = FEDC wird ! erst wird der Klammerausdruck berechnet und dort wird ein word um 16 bits nach links geschoben also bleibt da nix von über. > > l = (wh << 16ul); // geht auch nicht " > > > > l = wh * 65536ul + wl; // aber das geht > > > > l = l & 0x0fffffff; // auch OK | ||
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum