次の方法で共有


BitArray.And メソッド

現在の BitArray 内の要素と、指定した BitArray 内の対応する要素に対して、ビットごとの AND 演算を実行します。

Public Function And( _
   ByVal value As BitArray _) As BitArray
[C#]
public BitArray And(BitArrayvalue);
[C++]
public: BitArray* And(BitArray* value);
[JScript]
public function And(
   value : BitArray) : BitArray;

パラメータ

  • value
    ビットごとの AND 演算の実行対象となる BitArray

戻り値

現在の BitArray 内の要素と、指定した BitArray 内の対応する要素に対するビットごとの AND 演算の結果を格納する BitArray

例外

例外の種類 条件
ArgumentNullException value が null 参照 (Visual Basic では Nothing) です。
ArgumentException value の要素数と現在の BitArray の要素数が異なります。

解説

ビットごとの AND 演算は、両方のオペランドが true の場合は true 、一方または両方のオペランドが false の場合は false を返します。

使用例

[Visual Basic, C#, C++] BitArray の 2 つのインスタンスに対して AND 演算を実行する方法の例を次に示します。

 
Imports System
Imports System.Collections
Imports Microsoft.VisualBasic

Public Class SamplesBitArray    
    
    Public Shared Sub Main()
        
        ' Creates and initializes two BitArrays of the same size.
        Dim myBA1 As New BitArray(4)
        Dim myBA2 As New BitArray(4)
        myBA1(1) = False
        myBA1(0) = False
        myBA1(3) = True
        myBA1(2) = True
        myBA2(2) = False
        myBA2(0) = False
        myBA2(3) = True
        myBA2(1) = True
        
        ' Performs a bitwise AND operation between BitArray instances of the same size.
        Console.WriteLine("Initial values")
        Console.Write("myBA1:")
        PrintValues(myBA1, 8)
        Console.Write("myBA2:")
        PrintValues(myBA2, 8)
        Console.WriteLine()
        
        Console.WriteLine("Result")
        Console.Write("AND:")
        PrintValues(myBA1.And(myBA2), 8)
        Console.WriteLine()
        
        Console.WriteLine("After AND")
        Console.Write("myBA1:")
        PrintValues(myBA1, 8)
        Console.Write("myBA2:")
        PrintValues(myBA2, 8)
        Console.WriteLine()
        
        ' Performing AND between BitArray instances of different sizes returns an exception.
        Try
            Dim myBA3 As New BitArray(8)
            myBA3(0) = False
            myBA3(1) = False
            myBA3(2) = False
            myBA3(3) = False
            myBA3(4) = True
            myBA3(5) = True
            myBA3(6) = True
            myBA3(7) = True
            myBA1.And(myBA3)
        Catch myException As Exception
            Console.WriteLine("Exception: " + myException.ToString())
        End Try
    End Sub
    
    Public Shared Sub PrintValues(myList As IEnumerable, myWidth As Integer)
        Dim myEnumerator As System.Collections.IEnumerator = _
           myList.GetEnumerator()
        Dim i As Integer = myWidth
        While myEnumerator.MoveNext()
            If i <= 0 Then
                i = myWidth
                Console.WriteLine()
            End If
            i -= 1
            Console.Write(ControlChars.Tab + "{0}", myEnumerator.Current)
        End While
        Console.WriteLine()
    End Sub
End Class

' This code produces the following output.
' 
' Initial values
' myBA1:    False    False    True    True
' myBA2:    False    True    False    True
' 
' Result
' AND:    False    False    False    True
' 
' After AND
' myBA1:    False    False    False    True
' myBA2:    False    True    False    True
' 
' Exception: System.ArgumentException: Array lengths must be the same.
'    at System.Collections.BitArray.And(BitArray value) in <UnknownName>:line 
'    at SamplesBitArray.Main() 

[C#] 
using System;
using System.Collections;
public class SamplesBitArray  {

   public static void Main()  {

      // Creates and initializes two BitArrays of the same size.
      BitArray myBA1 = new BitArray( 4 );
      BitArray myBA2 = new BitArray( 4 );
      myBA1[0] = myBA1[1] = false;
      myBA1[2] = myBA1[3] = true;
      myBA2[0] = myBA2[2] = false;
      myBA2[1] = myBA2[3] = true;

      // Performs a bitwise AND operation between BitArray instances of the same size.
      Console.WriteLine( "Initial values" );
      Console.Write( "myBA1:" );
      PrintValues( myBA1, 8 );
      Console.Write( "myBA2:" );
      PrintValues( myBA2, 8 );
      Console.WriteLine();

      Console.WriteLine( "Result" );
      Console.Write( "AND:" );
      PrintValues( myBA1.And( myBA2 ), 8 );
      Console.WriteLine();

      Console.WriteLine( "After AND" );
      Console.Write( "myBA1:" );
      PrintValues( myBA1, 8 );
      Console.Write( "myBA2:" );
      PrintValues( myBA2, 8 );
      Console.WriteLine();

      // Performing AND between BitArray instances of different sizes returns an exception.
      try  {
         BitArray myBA3 = new BitArray( 8 );
         myBA3[0] = myBA3[1] = myBA3[2] = myBA3[3] = false;
         myBA3[4] = myBA3[5] = myBA3[6] = myBA3[7] = true;
         myBA1.And( myBA3 );
      } catch ( Exception myException )  {
         Console.WriteLine("Exception: " + myException.ToString());
      }
   }


   public static void PrintValues( IEnumerable myList, int myWidth )  {
      System.Collections.IEnumerator myEnumerator = myList.GetEnumerator();
      int i = myWidth;
      while ( myEnumerator.MoveNext() )  {
         if ( i <= 0 )  {
            i = myWidth;
            Console.WriteLine();
         }
         i--;
         Console.Write( "\t{0}", myEnumerator.Current );
      }
      Console.WriteLine();
   }
}
/* 
This code produces the following output.

Initial values
myBA1:    False    False    True    True
myBA2:    False    True    False    True

Result
AND:    False    False    False    True

After AND
myBA1:    False    False    False    True
myBA2:    False    True    False    True

Exception: System.ArgumentException: Array lengths must be the same.
   at System.Collections.BitArray.And(BitArray value) in <UnknownName>:line 0
   at SamplesBitArray.Main()
*/ 

[C++] 
#using <mscorlib.dll>
#using <system.dll>

using namespace System;
using namespace System::Collections;


void PrintValues( IEnumerable* myList, int myWidth )  {
   System::Collections::IEnumerator* myEnumerator = myList->GetEnumerator();
   int i = myWidth;
   while ( myEnumerator->MoveNext() )  {
      if ( i <= 0 )  {
         i = myWidth;
         Console::WriteLine();
      }
      i--;
      Console::Write( S"\t{0}", myEnumerator->Current );
   }
   Console::WriteLine();
}


int main()  {

   // Creates and initializes two BitArrays of the same size.
   const int ArraySize = 4;

   BitArray* myBA1 = new BitArray( ArraySize );
   BitArray* myBA2 = new BitArray( ArraySize );

   for( int i(0); i < ArraySize; ++i ) {
      myBA1->Item[i] = (i % 2 == 0);
      myBA2->Item[i] = !myBA1->Item[i];
   }

   // Performs a bitwise AND operation between BitArray instances of the same size.
   Console::WriteLine( S"Initial values" );
   Console::Write( S"myBA1:" );
   PrintValues( myBA1, 8 );
   Console::Write( S"myBA2:" );
   PrintValues( myBA2, 8 );
   Console::WriteLine();

   Console::WriteLine( S"Result" );
   Console::Write( S"AND:" );
   PrintValues( myBA1->And( myBA2 ), 8 );
   Console::WriteLine();

   Console::WriteLine( S"After AND" );
   Console::Write( S"myBA1:" );
   PrintValues( myBA1, 8 );
   Console::Write( S"myBA2:" );
   PrintValues( myBA2, 8 );
   Console::WriteLine();

   // Performing AND between BitArray instances of different sizes returns an exception.
   try  {
      BitArray* myBA3 = new BitArray( 8 );

      for( int i(0); i < 2*ArraySize; ++i ) {
         myBA3->Item[i] = (i % 4 != 0);
      }

      myBA1->And( myBA3 );
   } catch ( Exception* myException )  {
      Console::WriteLine( String::Concat(S"Exception: ",myException->ToString()) );
   }
}

/*
This code produces the following output.

Initial values
myBA1:  True    False   True    False
myBA2:  False   True    False   True

Result
AND:    False   False   False   False

After AND
myBA1:  False   False   False   False
myBA2:  False   True    False   True

Exception: System.ArgumentException: Array lengths must be the same.
at System.Collections.BitArray.And(BitArray value) in <UnknownName>:line 0
at SamplesBitArray.Main()
*/

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

参照

BitArray クラス | BitArray メンバ | System.Collections 名前空間