variablenwert überprüfung mit bitlogischen operatoren
-
hi,
folgender code schnipselint sub = 19; if(sub < 0 || sub > 32) return false;
die obige if abfrage möchte ich mit hilfe bitlogischer operatoren optimieren.
wie kann ich dies realisieren?
-
Hi
Vielleicht so:
if( ((unsigned)sub) & 0xffffffe0 ) return false
Gebe aber keine Garantie. Habs nicht getestet. Vielleicht hab ich mich in der Eile mit den Hex-Werten verhauen. Aber vom Prinzip her könnte es das sein.
Gruss SeriousSam
-
Leute die glauben Sie müssten if-Anweisungen in diese Art optimieren, sollten
bedenken das in 99,9% aller Fälle das (Performance-)Problem in den Algorithmen
und dem der ihn implementiert begründet ist.Bevor du mit derartigen Optimierungsversuchen anfängst schau dir besser den
den Rest deines Programmes an. Garantiert liegen da deine wirklichen Probleme.
-
xerxes schrieb:
hi,
folgender code schnipselint sub = 19; if(sub < 0 || sub > 32) return false;
die obige if abfrage möchte ich mit hilfe bitlogischer operatoren optimieren.
wie kann ich dies realisieren?Das wirst du wohl besser nicht hinbekommen. Wenn du geschrieben hättest
if(sub < 0 || sub > 31) return false;
Dann könntest du folgendes machen
if ((sub & ~31) != 0) return false;
Wobei das noch lange nicht schneller sein muss.
-
redhead, du hast recht, jedoch war es nur eine interessenfrage, die aufkam, als ich mir diese if abfrage ansah.
die performanence des ganze programms werde ich natürlich auch noch unter die lupe nehmen.danke für die antworten