moin forum, nur mal aus interesse hab ich ne frage (die hoffentlich noch nicht zu oft durchgekaut wurde - sufu hat nix ergeben). kurz und knapp: was ist schneller? x &= ~(1 << 7); oder x &= 0x7F; man stelle sich das mit mehreren schiebeoperationen vor ( (...) | (...) | ... ). brauch der µC tatsächlich für jeden schiebevorgang 1 cycle (also im beispiel oben 7)? pumpkin p.s. ich tippe auf den 'direkten' wert
Konstante Werte, die dem Compiler bekannt sind, werden auch direkt vom Compiler berechnet und nicht während der Programmlaufzeit! "1 << 7" ist ein konstanter Wert, und genauso ist ~(1 << 7) konstant und zur Compilezeit bekannt. Eine 1 um 7 Stellen nach links geschoben ist ein 80h, das Bitkomplement davon ist 7fh. Der Compiler macht daraus sofort den entsprechenden Binärwert. Die beiden obigen Schreibweisen sind, was den erzeugten Code angeht, identisch und demzufolge sind beide exakt gleich schnell. Das Thema ist hier aber tatsächlich schon x-mal durchgekaut worden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.