1

513などの数値を取得しています。この数値をビットマスク32に変換してから、各1ビットが配列内のどこにあるかをカウントする必要があります。

例513=0および9の場合

数値をbit32に変換してから、値を読み取るにはどうすればよいですか?

現在、数値を文字列の2進値に変換しています。

string bit = Convert.ToString(513, 2);

これを行うためのより効果的な方法はありますか?値をビット配列に変換するにはどうすればよいですか?

ありがとう

4

4 に答える 4

2
var val = 513;
for(var pos=0;;pos++)
{
    var x = 1 << pos;
    if(x > val) break;
    if((val & x) == x)
    {
        Console.WriteLine(pos);
    }
}
于 2011-04-25T13:40:09.527 に答える
1

BitVector32クラスは、本当にビットマップを保持したい場合に、これを支援するユーティリティクラスです

于 2011-04-25T13:46:09.360 に答える
1
using System.Collections;

int originalInt = 7;
byte[] bytes = BitConverter.GetBytes(originalInt);
BitArray bits = new BitArray(bytes);
int ndx = 9; //or whatever ndx you actually care about

if (bits[ndx] == true)
{
     Console.WriteLine("Bit at index {0} is on!", ndx);
}
于 2011-04-25T14:20:49.333 に答える
0

番号のビット#iをテストするにはn

if ((n & (1 << i)) != 0)
于 2011-04-25T13:36:16.127 に答える