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
        }