Welche der folgenden Techniken ist die beste Option, um eine Ganzzahl durch 2 zu teilen, und warum?
Technik 1:
x = x >> 1;
Technik 2:
x = x / 2;
Hier x
ist eine ganze Zahl.
x = x >>> 1
. Beachten Sie auch, dass es je nach Plattform und Compiler durchaus sinnvoll sein kann, Divisionen und Multiplikationen mithilfe von Verschiebungen manuell zu optimieren. - Denken Sie beispielsweise an Mikrocontroller ohne direkte ALU-Unterstützung für die Multiplikation.
x /= 2
weil es x >>= 1
zu sehr nach monadischer Bindung aussieht;)
x = x / 2
statt zu schreiben x /= 2
. Subjektive Präferenz vielleicht :)
⬜=
Kombinationen haben, sollten diese verwendet werden, wann immer es möglich ist. Es entfernt Rauschen und betont die Tatsache, dass x
es geändert wird , während der allgemeine =
Operator eher vorschlägt, einen völlig neuen Wert anzunehmen, der vom alten unabhängig ist. - Immer die kombinierten Akteure vermieden werden (so dass es lesbar ist so jemand, der mathematische Operatoren nur weiß) seine Stelle als auch haben, aber dann würden Sie die äußerst nützlich verzichten müssen ++
, --
, +=
auch.
x
erneut zuweisen möchten , ist keines auf diese Weise angemessen: Es sollte entwederx >>= 1
oder seinx /= 2
, je nachdem, was Sie mit der Operation ausdrücken möchten . Nicht weil es schneller ist (jeder moderne Compiler kompiliert sowieso alle äquivalenten Varianten zu identischer, schneller Assemblierung), sondern weil es weniger verwirrend ist.