私は次のトリックを使用して、intのビットセットを反復処理しています。
while (b != 0)
{
c = b & (0 - b);
//Do something...
b = b ^ c;
}
例として、数値4128(バイナリ0001000000100000)を取り上げると、cの値が32と4096であるため、これは正常に機能します。
ただし、実際の値の代わりに、これらの値の位置を指定します。これらは5と12です。
位置を返すループに挿入できる追加のコード行はありますか?