当前位置: 首页>>代码示例>>C#>>正文


C# BitArray.And方法代码示例

本文整理汇总了C#中BitArray.And方法的典型用法代码示例。如果您正苦于以下问题:C# BitArray.And方法的具体用法?C# BitArray.And怎么用?C# BitArray.And使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在BitArray的用法示例。


在下文中一共展示了BitArray.And方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: And_EmptyArray

 public static void And_EmptyArray()
 {
     BitArray bitArray1 = new BitArray(0);
     BitArray bitArray2 = new BitArray(0);
     
     Assert.Equal(0, bitArray1.And(bitArray2).Length);
 }
开发者ID:SGuyGe,项目名称:corefx,代码行数:7,代码来源:BitArray_OperatorsTests.cs

示例2: And_Operator

        public static void And_Operator(bool[] l, bool[] r, bool[] expected)
        {
            BitArray left = new BitArray(l);
            BitArray right = new BitArray(r);

            BitArray actual = left.And(right);
            Assert.Same(left, actual);
            Assert.Equal(actual.Length, expected.Length);

            for (int i = 0; i < expected.Length; i++)
            {
                Assert.Equal(expected[i], actual[i]);
            }
        }
开发者ID:ChuangYang,项目名称:corefx,代码行数:14,代码来源:BitArray_OperatorsTests.cs

示例3: runTest

 public virtual bool runTest()
 {
     Console.Out.WriteLine( "Plain\\System_NewCollections\\BitArray\\Co1550And.cs  runTest() started." );
     int iCountErrors = 0;
     int iCountTestcases = 0;
     BitArray ba2 = null;
     BitArray ba3 = null;
     BitArray ba4 = null;
     ba2 = new BitArray( 6 ,false );
     ba3 = new BitArray( 6 ,false );
     ba2.Set( 0 ,true ); 
     ba2.Set( 1 ,true ); 
     ba3.Set( 1 ,true ); 
     ba3.Set( 2 ,true ); 
     ba4 = ba2.And( ba3 );
     ++iCountTestcases;
     if ( ba4.Get( 0 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_09pv (Co1550And)"  );
         Console.Error.WriteLine(  "EXTENDEDINFO: 1 & 0 (E_09pv ,Co1550And)"  );
     }
     ++iCountTestcases;
     if ( ! ba4.Get( 1 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_96hf (Co1550And)"  );
     }
     ++iCountTestcases;
     if ( ba4.Get( 2 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_84si (Co1550And)"  );
     }
     ++iCountTestcases;
     if ( ba4.Get( 4 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_79kn (Co1550And)"  );
     }
     ba2 = new BitArray( 0x1000F ,false );
     ba3 = new BitArray( 0x1000F ,false );
     ba2.Set( 0x10000 ,true );
     ba2.Set( 0x10001 ,true );
     ba3.Set( 0x10001 ,true );
     ba3.Set( 0x10002 ,true );
     ba4 = ba2.And( ba3 );
     ++iCountTestcases;
     if ( ba4.Get( 0x10000 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_61ah (Co1550And)"  );
     }
     ++iCountTestcases;
     if ( ! ba4.Get( 0x10001 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_52xd (Co1550And)"  );
     }
     ++iCountTestcases;
     if ( ba4.Get( 0x10002 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_47op (Co1550And)"  );
     }
     ++iCountTestcases;
     if ( ba4.Get( 0x10004 ) )
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_54ja (Co1550And)"  );
     }
     try
     {
         BitArray b1 = new BitArray( 0 );
         BitArray b2 = new BitArray( 0 );
         b1.And( b2 );
     }
     catch ( Exception exc )
     {
         ++iCountErrors;
         Console.WriteLine( "Err_001, Exception was not expected " + exc );
     }
     ba2 = new BitArray( 11 ,false );
     ba3 = new BitArray( 6 ,false );
     try
     {
         ++iCountTestcases;
         ba4 = ba2.And( ba3 );
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_66vc (Co1550And)"  );
     }
     catch ( ArgumentException ) {}
     catch ( Exception )  
     {
         ++iCountErrors;
         Console.Error.WriteLine(  "POINTTOBREAK: find error E_58jq (Co1550And)"  );
     }
     ba2 = new BitArray( 6 ,false );
     ba3 = new BitArray( 11 ,false );
     try
//.........这里部分代码省略.........
开发者ID:ArildF,项目名称:masters,代码行数:101,代码来源:co1550and.cs

示例4: And_Invalid

        public static void And_Invalid()
        {
            BitArray bitArray1 = new BitArray(11, false);
            BitArray bitArray2 = new BitArray(6, false);

            // Different lengths
            Assert.Throws<ArgumentException>(null, () => bitArray1.And(bitArray2));
            Assert.Throws<ArgumentException>(null, () => bitArray2.And(bitArray1));

            Assert.Throws<ArgumentNullException>("value", () => bitArray1.And(null));
        }
开发者ID:ChuangYang,项目名称:corefx,代码行数:11,代码来源:BitArray_OperatorsTests.cs

示例5: OperatorTest

        public static void OperatorTest(Operator op)
        {
            BitArray bitArray1 = new BitArray(6, false);
            BitArray bitArray2 = new BitArray(6, false);
            BitArray result;

            bitArray1.Set(0, true);
            bitArray1.Set(1, true);

            bitArray2.Set(1, true);
            bitArray2.Set(2, true);

            switch (op)
            {
                case Operator.Xor:
                    result = bitArray1.Xor(bitArray2);
                    Assert.Same(bitArray1, result);
                    Assert.True(result.Get(0));
                    Assert.False(result.Get(1));
                    Assert.True(result.Get(2));
                    Assert.False(result.Get(4));
                    break;

                case Operator.And:
                    result = bitArray1.And(bitArray2);
                    Assert.Same(bitArray1, result);
                    Assert.False(result.Get(0));
                    Assert.True(result.Get(1));
                    Assert.False(result.Get(2));
                    Assert.False(result.Get(4));
                    break;

                case Operator.Or:
                    result = bitArray1.Or(bitArray2);
                    Assert.Same(bitArray1, result);
                    Assert.True(result.Get(0));
                    Assert.True(result.Get(1));
                    Assert.True(result.Get(2));
                    Assert.False(result.Get(4));
                    break;
            }
            
            // Size stress cases.
            bitArray1 = new BitArray(0x1000F, false);
            bitArray2 = new BitArray(0x1000F, false);

            bitArray1.Set(0x10000, true); // The bit for 1 (2^0).
            bitArray1.Set(0x10001, true); // The bit for 2 (2^1).

            bitArray2.Set(0x10001, true); // The bit for 2 (2^1).

            switch (op)
            {
                case Operator.Xor:
                    result = bitArray1.Xor(bitArray2);
                    Assert.Same(bitArray1, result);
                    Assert.True(result.Get(0x10000));
                    Assert.False(result.Get(0x10001));
                    Assert.False(result.Get(0x10002));
                    Assert.False(result.Get(0x10004));
                    break;

                case Operator.And:
                    result = bitArray1.And(bitArray2);
                    Assert.Same(bitArray1, result);
                    Assert.False(result.Get(0x10000));
                    Assert.True(result.Get(0x10001));
                    Assert.False(result.Get(0x10002));
                    Assert.False(result.Get(0x10004));
                    break;

                case Operator.Or:
                    result = bitArray1.Or(bitArray2);
                    Assert.Same(bitArray1, result);
                    Assert.True(result.Get(0x10000));
                    Assert.True(result.Get(0x10001));
                    Assert.False(result.Get(0x10002));
                    Assert.False(result.Get(0x10004));
                    break;
            }
        }
开发者ID:SGuyGe,项目名称:corefx,代码行数:81,代码来源:BitArray_OperatorsTests.cs

示例6: NodeCheckAction

    // 隣接判定、ノードごとの処理
    public void NodeCheckAction(NodeController.NodeLinkTaskChecker Tc, _eLinkDir Link)
    {
        NodeDebugLog += "NodeCheckAction. CheckerID : " + Tc.ID + "\n";
        // チェック済みでスキップ
        if (bChecked) { Tc.Branch--; return; }

        // 各種変数定義
        bool bBranch = false;
        bChecked = true;
        Tc.SumNode++;
        bChain = false;

        // お隣さんを更新
        UpdateNegibor();

        // 状態表示
        Tc += (ToString() + "Action \n     Link : " + bitLink.ToStringEx() + "\nNegibor : " + Negibor.ToStringEx());
        Tc += Tc.NotFin + " : " + Tc.Branch.ToString();

        // チェックスタート
        // 接地判定(根本のみ)
        if (Link == _eLinkDir.NONE)     // 根本か確認
        {
            if (!bitLink[(int)_eLinkDir.RD] && !bitLink[(int)_eLinkDir.LD]) // 下方向チェック
            {
                Tc.Branch--;
                Tc.SumNode--;
                bChecked = false;
                return;                 // 繋がってないなら未チェックとして処理終了
            }
            // 繋がっている
            Tc += ("Ground");
        }

        // この時点で枝が繋がっている事が確定
        bChain = true;
        Tc.NodeList.Add(this);  // チェッカに自身を登録しておく

        // 終端ノードであれば、周囲チェック飛ばす
        var TempBit = new BitArray(6);
        // 除外方向設定
        TempBit.SetAll(false);
        if (Link == _eLinkDir.NONE)
        {
            TempBit.Set((int)_eLinkDir.RD, true);
            TempBit.Set((int)_eLinkDir.LD, true);
        }
        else {
            TempBit.Set((int)Link, true);
        }
        TempBit.And(bitLink).Xor(bitLink);    // 自身の道とAND後、自身の道とXOR。
        if (TempBit.isZero())                  // 比較して一致なら除外方向以外に道がない = XOR後に全0なら終端
        {
            Tc.Branch--;                      // 終端ノードであればそこで終了
            return;
        }

        // 周囲のチェック
        // この時点で、TempBitは先が壁の道を除いた自分の道を示している。
        Tc += "ExcludeFrom MyWay : " + TempBit.ToStringEx();

        for (int n = 0; n < (int)_eLinkDir.MAX; n++)
        {
            var TempBit2 = new BitArray(6);
            // 隣接ノードのうち、道が無い場所に自分の道が伸びてたらそこは途切れている。
            TempBit2 = TempBit.retAnd(Negibor.retNot());
            // ノード繋がってない
            if (TempBit2[n])
            {
                nodeControllerScript.unChainController.AddObj(this, (_eLinkDir)n);
                Tc.NotFin = true;                               // 隣と繋がってないので、枝未完成として登録
            }
        }

        Tc += ("Negibor : " + Negibor.ToStringEx());
        TempBit.And(Negibor);                       // 隣接ノードと繋がっている場所を特定
        Tc += "Linked : " + TempBit.ToStringEx();
        for (int n = 0; n < (int)_eLinkDir.MAX; n++)
        {
            if (!TempBit[n]) { continue; }          // ビット立ってないならスキップ

            // お隣さんと繋がっているので、処理引き渡しの準備
            bChain = true;

            // デバック表示
            Tc += ("Linked [" + LinkDirToString(n) + "]");

            // 接続先がおかしいならノーカンで
            Vec2Int Target = nodeControllerScript.GetDirNode(nodeID, (_eLinkDir)n);
            if (Target.x == -1) { continue; }

            // 分岐を検出してカウント
            if (!bBranch)
            {
                bBranch = true;     // 一回目ならノーカン
            }
            else {
                Tc.Branch++;        // 二回目以降は分岐なので、枝カウンタを+1
            }
//.........这里部分代码省略.........
开发者ID:GotoK,项目名称:H401,代码行数:101,代码来源:Node.cs

示例7: GetPumpStation

    // returns a bitboard of a pump station that exists on the specified coordinates,
    // or return empty if no pump station exists on the specified coordinates
    public static BitArray GetPumpStation(BitArray pumpStations, int x, int y)
    {
        // check to see if specified unit is on one of our pump stations
        BitArray test = new BitArray(length, false).Or(pumpStations);
        test.And(position[x][y]);
        if (Equal(test, empty))
        {
          return empty;
        }

        // create bitboard representing pump station the unit is standing on
        BitArray pumpStation = new BitArray(length, false).Or(position[x][y]);
        if (x - 1 >= 0)
        {
          pumpStation.Or(position[x - 1][y]);
          if (y - 1 >= 0)
          {
        pumpStation.Or(position[x - 1][y - 1]);
          }
          if (y + 1 < height)
          {
        pumpStation.Or(position[x - 1][y + 1]);
          }
        }
        if (x + 1 < width)
        {
          pumpStation.Or(position[x + 1][y]);
          if (y - 1 >= 0)
          {
        pumpStation.Or(position[x + 1][y - 1]);
          }
          if (y + 1 < height)
          {
        pumpStation.Or(position[x + 1][y + 1]);
          }
        }
        if (y - 1 >= 0)
        {
          pumpStation.Or(position[x][y - 1]);
        }
        if (y + 1 < height)
        {
          pumpStation.Or(position[x][y + 1]);
        }
        return pumpStation.And(pumpStations);
    }
开发者ID:austingantner,项目名称:MegaMinerAI12-Mars,代码行数:48,代码来源:BitBoard.cs


注:本文中的BitArray.And方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。