8

あるインタビューで、彼らは私にこう尋ねました。これは非常に簡単な質問で、私はそれに答えました。

その後、彼らは私に頼んだ、それをしてくださいwithout branching。分岐とは何かわかりません。私はそれを検索し、ここに来ました http://graphics.stanford.edu/~seander/bithacks.html

しかし、分岐と非分岐の概念はまだ得られていません。説明してくださいBranching

4

2 に答える 2

12

分岐とは、CPU が実行する命令に条件付きジャンプが含まれていることを意味します。二者択一。これはif、 、forループ、whileループswitch?:またはブール値に基づいて決定を行う何かを意味する可能性があります。

人々がよく忘れるブランチのクラスの 1 つは、ブール演算子の短絡であり、おそらく (すべての CPU であるとは限りませんが) 真の値に評価されるものですint foo; ...; foo = !foo;

少し設定するには:

i |= (1 << bit);

少しリセットします。

i &= ~(1 << bit);

少し切り替えます:

i ^= (1 << bit);

枝なし。ブランチを使用しなければならないほど複雑にする方法が実際にはわかりません。

誰かが分岐について心配したい理由は、分岐予測です。それが重要な理由の優れた説明については、この質問と回答を参照してください。

于 2013-07-23T07:33:12.527 に答える