Re: Umgang mit den LONGSs Kategorie: Programmierung C (von ulrich korth - 15.11.2010 12:27) | ||
Als Antwort auf Umgang mit den LONGSs von jo - 15.11.2010 8:17 | ||
| ||
> > 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?? // 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 l = (wh << 16ul); // geht auch nicht " l = wh * 65536ul + wl; // aber das geht l = l & 0x0fffffff; // auch OK | ||
Antwort schreiben Antworten: Re: Umgang mit den LONGSs (von jo - 15.11.2010 12:51) Re: Umgang mit den LONGSs (von ulrich korth - 15.11.2010 15:45) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum