簡體   English   中英

Java中的BitSet類

[英]BitSet Class in java

當我閱讀Java中的BitSet類時,遇到了以下示例。 是SetSet類的邏輯和,或&xor與邏輯門邏輯相同?

有人可以在上面的示例中解釋我的工作方式或方法嗎? 因為當我閱讀有關或方法的oracle文檔時,它說:

公共無效或(BitSet設置)

使用bit set參數對該位設置執行邏輯或。 修改此位集,以便僅當且僅當它已經具有值true或位集參數中的相應位具有值true時,其中的位才具有true值。

參數:set-一點設置

以下是代碼::

import java.util.BitSet;

public class BitSetDemo {

  public static void main(String args[]) {
     BitSet bits1 = new BitSet(16);
     BitSet bits2 = new BitSet(16);

     // set some bits
     for(int i=0; i<16; i++) {
        if((i%2) == 0) bits1.set(i);
        if((i%5) != 0) bits2.set(i);
     }
     System.out.println("Initial pattern in bits1: ");
     System.out.println(bits1);
     System.out.println("\nInitial pattern in bits2: ");
     System.out.println(bits2);

     // AND bits
     bits2.and(bits1);
     System.out.println("\nbits2 AND bits1: ");
     System.out.println(bits2);

     // OR bits
     bits2.or(bits1);
     System.out.println("\nbits2 OR bits1: ");
     System.out.println(bits2);

     // XOR bits
     bits2.xor(bits1);e
     System.out.println("\nbits2 XOR bits1: ");
     System.out.println(bits2);
  }
}

The Output of above program is

Initial pattern in bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

Initial pattern in bits2:
{1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

bits2 AND bits1:
{2, 4, 6, 8, 12, 14}

bits2 OR bits1:
{0, 2, 4, 6, 8, 10, 12, 14}

bits2 XOR bits1:
{}

so in the above example result of or should be {0,1,2,3,4,6,7,8,9,10,11,12,13,14} according to oracle docs instead of {0, 2, 4, 6, 8, 10, 12, 14}. or am I misunderstood the explanation?

Really appreciate the help.

問題是,您使用已經從and調用中修改的bits2的值來計算bits2.or(bits1) 代替直接在bits2上調用orandxor ,請嘗試對每個測試使用單獨的bits2副本。

and操作期間and通過調用bits2.and(bits1)更改了bits2的值。 再次通過調用bits2.or(bits1)bits2.xor(bits1)的以下orxor操作來更改bits2的值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM