Welches ist schneller ein% 2 oder ein & 1? [Duplikat]

Oct 10 2020

Ich kenne das Prinzip von a&1: zum Beispiel:

4&1: 0100
     0001
   = 0000

und

5&1: 0101
     0001
   = 0001

Aber ich möchte wissen, was und wie das Prinzip ist a%2

Welches ist schneller a%2oder a&1?

Antworten

4 P__JsupportswomeninPoland Oct 10 2020 at 22:36

Es gibt zwei Fälle:

  1. Ganzzahl ohne Vorzeichen. Jeder moderne Compiler kompiliert x % 2als x & 1auch ohne die Optimierungen. Die Geschwindigkeit ist also gleich, da beide den gleichen Maschinencode haben.
  2. Ganzzahl mit Vorzeichen - Ergebnis x % 2und Ergebnis von x & 1sind völlig unterschiedlich. In diesem Fall sollten x % 2Sie Modulo abrufen und x & 1das LSB testen.https://godbolt.org/z/cEY4dM