0

の一意の(...000010000...)バイナリマスクを反復処理する方法はlong long?私は次のようなマスクの上を意味しました0001, 0010, 0100, 1000

4

1 に答える 1

4

単一のビットが設定された各マスクを意味する場合:

for (unsigned long long mask = 1; mask != 0; mask <<= 1) {
    // Do something with mask
}

unsignedシフトがオーバーフローしたときの動作を定義するには、 を使用する必要があることに注意してください。

考えられるすべてのマスク値を意味しているわけではないと思います。それらすべてを反復するには非常に長い時間がかかります。

于 2013-03-18T16:03:29.037 に答える