BitArray.Xor(BitArray) 메서드

정의

현재 BitArray 개체의 요소와 지정한 배열의 해당 요소에 대해 배타적 비트 OR 연산을 수행합니다.Performs the bitwise exclusive OR operation between the elements of the current BitArray object against the corresponding elements in the specified array. 현재 BitArray 개체는 배타적 비트 OR 연산 결과를 저장하도록 수정됩니다.The current BitArray object will be modified to store the result of the bitwise exclusive OR operation.

public:
 System::Collections::BitArray ^ Xor(System::Collections::BitArray ^ value);
public System.Collections.BitArray Xor (System.Collections.BitArray value);
member this.Xor : System.Collections.BitArray -> System.Collections.BitArray
Public Function Xor (value As BitArray) As BitArray

매개 변수

value
BitArray

배타적 비트 OR 연산이 수행될 배열입니다.The array with which to perform the bitwise exclusive OR operation.

반환

배타적 비트 OR 작업의 결과 포함하는 배열로, 현재 BitArray 개체에 대한 참조입니다.An array containing the result of the bitwise exclusive OR operation, which is a reference to the current BitArray object.

예외

valuenull인 경우value is null.

value와 현재 BitArray의 요소 수가 서로 다른 경우value and the current BitArray do not have the same number of elements.

예제

다음 코드 예제에서는 두 BitArray 개체 간에 XOR 연산을 수행 하는 방법을 보여 줍니다.The following code example shows how to perform the XOR operation between two BitArray objects.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList, int myWidth );
int main()
{
   
   // Creates and initializes two BitArrays of the same size.
   BitArray^ myBA1 = gcnew BitArray( 4 );
   BitArray^ myBA2 = gcnew BitArray( 4 );
   myBA1[ 0 ] = false;
   myBA1[ 1 ] = false;
   myBA1[ 2 ] = true;
   myBA1[ 3 ] = true;
   myBA2[ 0 ] = false;
   myBA2[ 1 ] = true;
   myBA2[ 2 ] = false;
   myBA2[ 3 ] = true;
   
   // Performs a bitwise XOR 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( "XOR:" );
   PrintValues( myBA1->Xor( myBA2 ), 8 );
   Console::WriteLine();
   Console::WriteLine( "After XOR" );
   Console::Write( "myBA1:" );
   PrintValues( myBA1, 8 );
   Console::Write( "myBA2:" );
   PrintValues( myBA2, 8 );
   Console::WriteLine();
   
   // Performing XOR between BitArray instances of different sizes returns an exception.
   try
   {
      BitArray^ myBA3 = gcnew 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->Xor( myBA3 );
   }
   catch ( Exception^ myException ) 
   {
      Console::WriteLine( "Exception: {0}", myException );
   }

}

void PrintValues( IEnumerable^ myList, int myWidth )
{
   int i = myWidth;
   IEnumerator^ myEnum = myList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      if ( i <= 0 )
      {
         i = myWidth;
         Console::WriteLine();
      }

      i--;
      Console::Write( "{0,8}", obj );
   }

   Console::WriteLine();
}

/* 
 This code produces the following output.
 
 Initial values
 myBA1:   False   False    True    True
 myBA2:   False    True   False    True

 Result
 XOR:   False    True    True   False

 After XOR
 myBA1:   False    True    True   False
 myBA2:   False    True   False    True

 Exception: System.ArgumentException: Array lengths must be the same.
    at System.Collections.BitArray.Xor(BitArray value)
    at SamplesBitArray.Main()

 */
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 XOR 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( "XOR:" );
      PrintValues( myBA1.Xor( myBA2 ), 8 );
      Console.WriteLine();

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

      // Performing XOR 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.Xor( myBA3 );
      } catch ( Exception myException )  {
         Console.WriteLine("Exception: " + myException.ToString());
      }
   }

   public static void PrintValues( IEnumerable myList, int myWidth )  {
      int i = myWidth;
      foreach ( Object obj in myList ) {
         if ( i <= 0 )  {
            i = myWidth;
            Console.WriteLine();
         }
         i--;
         Console.Write( "{0,8}", obj );
      }
      Console.WriteLine();
   }
}


/* 
This code produces the following output.

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

Result
XOR:   False    True    True   False

After XOR
myBA1:   False    True    True   False
myBA2:   False    True   False    True

Exception: System.ArgumentException: Array lengths must be the same.
   at System.Collections.BitArray.Xor(BitArray value)
   at SamplesBitArray.Main()

*/ 
Imports System.Collections

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(0) = False
        myBA1(1) = False
        myBA1(2) = True
        myBA1(3) = True
        myBA2(0) = False
        myBA2(2) = False
        myBA2(1) = True
        myBA2(3) = True
        
        ' Performs a bitwise XOR 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("XOR:")
        PrintValues(myBA1.Xor(myBA2), 8)
        Console.WriteLine()
        
        Console.WriteLine("After XOR")
        Console.Write("myBA1:")
        PrintValues(myBA1, 8)
        Console.Write("myBA2:")
        PrintValues(myBA2, 8)
        Console.WriteLine()
        
        ' Performing XOR 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.Xor(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 i As Integer = myWidth
        Dim obj As [Object]
        For Each obj In  myList
            If i <= 0 Then
                i = myWidth
                Console.WriteLine()
            End If
            i -= 1
            Console.Write("{0,8}", obj)
        Next obj
        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
' XOR:   False    True    True   False
' 
' After XOR
' myBA1:   False    True    True   False
' myBA2:   False    True   False    True
' 
' Exception: System.ArgumentException: Array lengths must be the same.
'    at System.Collections.BitArray.Xor(BitArray value)
'    at SamplesBitArray.Main()

설명

배타적 비트 OR 연산은 정확히 하나의 피연산자가 true경우 true을 반환 하 고 두 피연산자의 부울 값이 같으면 false을 반환 합니다.The bitwise exclusive OR operation returns true if exactly one operand is true, and returns false if both operands have the same Boolean value.

이 메서드는 n Count되는 O(n) 작업입니다.This method is an O(n) operation, where n is Count.

적용 대상