BitArray.Xor(BitArray) 方法(System.Collections) | Microsoft Docs

文章推薦指數: 80 %
投票人數:10人

C# 複製. public System.Collections.BitArray Xor (System.Collections.BitArray value); ... 下列程式碼範例示範如何在兩BitArray 個物件之間執行XOR 作業。

跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 語言 閱讀英文 儲存 目錄 閱讀英文 儲存 編輯 Twitter LinkedIn Facebook 電子郵件 目錄 BitArray.Xor(BitArray)方法 參考 定義 命名空間: System.Collections 組件:System.Collections.dll 組件:mscorlib.dll 組件:netstandard.dll 重要 部分資訊涉及發行前產品,在發行之前可能會有大幅修改。

Microsoft對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。

本文內容 針對指定陣列中的對應元素,在目前BitArray物件的元素之間執行位元排除OR運算。

會修改目前的BitArray物件以儲存位元排除OR運算的結果。

public: System::Collections::BitArray^Xor(System::Collections::BitArray^value); publicSystem.Collections.BitArrayXor(System.Collections.BitArrayvalue); memberthis.Xor:System.Collections.BitArray->System.Collections.BitArray PublicFunctionXor(valueAsBitArray)AsBitArray 參數 value BitArray 用以執行位元互斥OR運算的陣列。

傳回 BitArray 包含位元排除OR運算結果的陣列,是目前的BitArray物件參考。

例外狀況 ArgumentNullException value為null。

ArgumentException value和目前的BitArray,項目數不相同。

範例 下列程式碼範例示範如何在兩BitArray個物件之間執行XOR作業。

usingnamespaceSystem; usingnamespaceSystem::Collections; voidPrintValues(IEnumerable^myList,intmyWidth); intmain() { //CreatesandinitializestwoBitArraysofthesamesize. BitArray^myBA1=gcnewBitArray(4); BitArray^myBA2=gcnewBitArray(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; //PerformsabitwiseXORoperationbetweenBitArrayinstancesofthesamesize. Console::WriteLine("Initialvalues"); 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("AfterXOR"); Console::Write("myBA1:"); PrintValues(myBA1,8); Console::Write("myBA2:"); PrintValues(myBA2,8); Console::WriteLine(); //PerformingXORbetweenBitArrayinstancesofdifferentsizesreturnsanexception. try { BitArray^myBA3=gcnewBitArray(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); } } voidPrintValues(IEnumerable^myList,intmyWidth) { inti=myWidth; IEnumerator^myEnum=myList->GetEnumerator(); while(myEnum->MoveNext()) { Object^obj=safe_cast(myEnum->Current); if(i<=0) { i=myWidth; Console::WriteLine(); } i--; Console::Write("{0,8}",obj); } Console::WriteLine(); } /* Thiscodeproducesthefollowingoutput. Initialvalues myBA1:FalseFalseTrueTrue myBA2:FalseTrueFalseTrue Result XOR:FalseTrueTrueFalse AfterXOR myBA1:FalseTrueTrueFalse myBA2:FalseTrueFalseTrue Exception:System.ArgumentException:Arraylengthsmustbethesame. atSystem.Collections.BitArray.Xor(BitArrayvalue) atSamplesBitArray.Main() */ usingSystem; usingSystem.Collections; publicclassSamplesBitArray{ publicstaticvoidMain(){ //CreatesandinitializestwoBitArraysofthesamesize. BitArraymyBA1=newBitArray(4); BitArraymyBA2=newBitArray(4); myBA1[0]=myBA1[1]=false; myBA1[2]=myBA1[3]=true; myBA2[0]=myBA2[2]=false; myBA2[1]=myBA2[3]=true; //PerformsabitwiseXORoperationbetweenBitArrayinstancesofthesamesize. Console.WriteLine("Initialvalues"); 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("AfterXOR"); Console.Write("myBA1:"); PrintValues(myBA1,8); Console.Write("myBA2:"); PrintValues(myBA2,8); Console.WriteLine(); //PerformingXORbetweenBitArrayinstancesofdifferentsizesreturnsanexception. try{ BitArraymyBA3=newBitArray(8); myBA3[0]=myBA3[1]=myBA3[2]=myBA3[3]=false; myBA3[4]=myBA3[5]=myBA3[6]=myBA3[7]=true; myBA1.Xor(myBA3); }catch(ExceptionmyException){ Console.WriteLine("Exception:"+myException.ToString()); } } publicstaticvoidPrintValues(IEnumerablemyList,intmyWidth){ inti=myWidth; foreach(ObjectobjinmyList){ if(i<=0){ i=myWidth; Console.WriteLine(); } i--; Console.Write("{0,8}",obj); } Console.WriteLine(); } } /* Thiscodeproducesthefollowingoutput. Initialvalues myBA1:FalseFalseTrueTrue myBA2:FalseTrueFalseTrue Result XOR:FalseTrueTrueFalse AfterXOR myBA1:FalseTrueTrueFalse myBA2:FalseTrueFalseTrue Exception:System.ArgumentException:Arraylengthsmustbethesame. atSystem.Collections.BitArray.Xor(BitArrayvalue) atSamplesBitArray.Main() */ ImportsSystem.Collections PublicClassSamplesBitArray PublicSharedSubMain() 'CreatesandinitializestwoBitArraysofthesamesize. DimmyBA1AsNewBitArray(4) DimmyBA2AsNewBitArray(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 'PerformsabitwiseXORoperationbetweenBitArrayinstancesofthesamesize. Console.WriteLine("Initialvalues") 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("AfterXOR") Console.Write("myBA1:") PrintValues(myBA1,8) Console.Write("myBA2:") PrintValues(myBA2,8) Console.WriteLine() 'PerformingXORbetweenBitArrayinstancesofdifferentsizesreturnsanexception. Try DimmyBA3AsNewBitArray(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) CatchmyExceptionAsException Console.WriteLine("Exception:"+myException.ToString()) EndTry EndSub PublicSharedSubPrintValues(myListAsIEnumerable,myWidthAsInteger) DimiAsInteger=myWidth DimobjAs[Object] ForEachobjInmyList Ifi<=0Then i=myWidth Console.WriteLine() EndIf i-=1 Console.Write("{0,8}",obj) Nextobj Console.WriteLine() EndSub EndClass 'Thiscodeproducesthefollowingoutput. ' 'Initialvalues 'myBA1:FalseFalseTrueTrue 'myBA2:FalseTrueFalseTrue ' 'Result 'XOR:FalseTrueTrueFalse ' 'AfterXOR 'myBA1:FalseTrueTrueFalse 'myBA2:FalseTrueFalseTrue ' 'Exception:System.ArgumentException:Arraylengthsmustbethesame. 'atSystem.Collections.BitArray.Xor(BitArrayvalue) 'atSamplesBitArray.Main() 備註 如果只有一個運算元是true,則位獨佔OR作業會true傳回,如果兩個運算元具有相同的布林值,則會傳回false。

這個方法是作業O(n),其中n是Count。

適用於 本文內容



請為這篇文章評分?