1

2進数を操作し、任意の数値(この場合は10進数)を2進数に、またはその逆に変換するためのクラスが組み込まれているのではないかと思います。たとえば、3番目のビットがビット単位の演算子であるかどうかを確認したい場合は1、ビット演算子を使用できますが、&実際に10進数を2進数に変換して、必要な位置の値を確認する方法があれば、はるかに簡単になると思います。を使用して例を検索して見つけましBitArrayたが、何らかの理由でエラーが発生し、存在しないため、古くなっているのではないかと思います。また、MSライブラリを試してみましBitConverter.GetBytes(value)たが、次の例を試してみると、何ができるのかまったくわかりません。

  int value = 12345678;
  byte[] bytes = BitConverter.GetBytes(value);
  Console.WriteLine(BitConverter.ToString(bytes));

出力は4E-61-BC-00、実際に何であるかはわかりません。私が探しているのは、私が好きint i = 247; // 11110111で、それから:

i[0] = 1;
i[1] = 1;
i[2] = 1;
i[3] = 0;
i[4] = 1;
i[5] = 1;
i[6] = 1;
i[7] = 1;

したがって、どの位置でも1または0を取得できます。

i[2] = 1;
4

2 に答える 2

3

BitArrayを使用する必要がありますが、System.Collectionsを使用して追加したことを確認してください。CSファイルに。新しいBitArrayにbyte[]を渡すことができます。これにより、変換が処理されます。

http://msdn.microsoft.com/en-us/library/x1xda43a.aspx

于 2012-09-12T16:27:38.167 に答える
2

ええ、はい、あなたはBitArrayから作成することができますint

int i = 247;
BitArray b = new BitArray(i);

そして、3番目のビットを確認できます。

if (b[2])
{
    // the bit is set
}

の要素はBitArrayBooleanあるため、3番目のビットを設定するには、次のように記述します。

b[2] = true;

ただし、に戻すのintは少し面倒です。CopyToをにコピーしてBitArrayから、int[]の最初のアイテムにアクセスする必要があるためですint[]

なぜあなたが頭痛を乗り越えたいのか分かりません。&ビット演算子を使用するよりもはるかに遅く、面倒になります。さまざまなビット値の定数を簡単に作成できます。

const int bit0 = 0x01;
const int bit1 = 0x02;
const int bit2 = 0x04;
const int bit3 = 0x08;
const int bit4 = 0x10;
// etc.

その後:

if ((i & bit2) != 0)
{
    // the bit is set
}

シングルビットの設定は次のとおりです。

i |= bit2;

ビットのリセットは次のとおりです。

i &= ~bit2;
于 2012-09-12T16:33:22.017 に答える