for (int g=1; g<=100000; g++)
{
for (int y=0; y<20; y++)
{
if (((1<<y)&g) && (!((1<<(y+1))&g)) && ((1<<(y+2))&g)) counter[g]++;
}
}
これは状態を確認していますがまだ混乱していますが、101を確認していますか?
誰でもこの条件がテストされている場合、何を説明することができますか?ループ内のテスト条件を理解できません
と置き換えることができます。ビットシフト演算子とビット単位ANDについて聞いたことがありますか? – user0042
これ以上分割することができなくなるまで、小さな断片に分割してください。次に、デバッガを使用して、それぞれの単純かつ小さなサブ式の結果を確認します。 –
'if'文は、その述語として名前付き関数を必死に呼び出しています。 –