2016-08-18 2 views
-6

Kann ich eine detaillierte Beschreibung oder Dokumentation erhalten, wie diese Operatoren intrinsisch arbeiten? Wenn angewendet, ist der Ausgang derselbe. Bisher habe ich zu diesem Thema wenig bis nichts gefunden.Wie funktionieren [n & 1] und [n% 2]?

+2

Der Compiler kann sie so optimieren, dass sie die gleichen Funktionen ausführen. –

+1

Drucken Sie die Assemblersprache für beide Anweisungen und vergleichen Sie. Vergleichen Sie auch die Assemblersprache auf verschiedenen Optimierungsebenen. –

+0

@ThomasMatthews Wenn 'mod'ding von Zweierpotenzen, wie in der Überschrift, ja. – tofro

Antwort

5

In der Theorie, n&1 Masken aus oder behält nur das niedrigste Bit einer Zahl.

Die n%2 teilt n durch 2 und gibt den Rest zurück.

Beide Tests sind üblich, um festzustellen, ob eine Zahl gerade oder ungerade ist.

Der Compiler ist es erlaubt äquivalente Funktionalität für den Ausdruck zu ersetzen. Daher kann der Compiler in beiden Fällen Anweisungen für n&1 ausgeben.

Drucken Sie die Liste der Assembler für die Funktion unter verschiedenen Optimierungsstufen.

+7

Warum der Downvote? –

+0

'&' heißt [** bitweiser Operator **] (https://msdn.microsoft.com/en-us/library/4ke0e88k.aspx). –

+0

@FirstStep: Wo erwähne ich den Operator? Ich weiß, dass es einer von vielen bitweisen Operatoren ist. Es heißt "bitweises UND" oder "arithmetisches UND". –

Verwandte Themen