C#:Int 32データ型に直接ビットを追加するテスト拡張方法
C#では、マイクロソフトはInt 32データ型に対して直接ビットテスト方法を提供するのではなく、BitVector 32構造を工夫した.BitVector 32はマスクを下付き文字としてビットマークの状態を取得するため、意識を錯乱させることは避けられない.以下、私はC#の拡張方法を通じて、直接Int 32データ型にビットテスト方法を追加します.
ソース:
呼び出し例:
ソース:
using System;
namespace Splash
{
public static class BitOperation
{
/// <summary>
/// Bit
/// </summary>
/// <param name="n"> </param>
/// <param name="bit"> Bit </param>
/// <returns>
/// true: Bit 1
/// false: Bit 0
/// </returns>
public static Boolean BitTest(this Int32 n, Int32 bit)
{
if ((n & (1 << bit)) != 0)
{
return true;
}
else
{
return false;
}
}
/// <summary>
/// Bit
/// </summary>
/// <param name="n"> </param>
/// <param name="bit"> Bit </param>
public static Int32 BitSet(this Int32 n, Int32 bit)
{
return n | (1 << bit);
}
}
}
呼び出し例:
static void BitOperation()
{ //
Int32 n = 0;
n = n.BitSet(0); // Bit0
n = n.BitSet(2); // Bit2
Console.WriteLine(n);
Console.WriteLine("Bit0 = " + n.BitTest(0)); // Bit0
Console.WriteLine("Bit2 = " + n.BitTest(2)); // Bit2
// BitVector32
BitVector32 BV = new BitVector32(n);
Console.WriteLine(BV.Data);
Console.WriteLine("Bit0 = " + BV[1 << 0]); // Bit0
Console.WriteLine("Bit2 = " + BV[1 << 2]); // Bit2
}