簡體   English   中英

如何獲得BitSet表示的位數?

[英]How do I get the number of bits represented by a BitSet?

如果我運行以下代碼:

BitSet test = new BitSet(20);
System.out.println("Bitset size is " + test.size());
System.out.println("Bitset length is " + test.length());

我得到的輸出:

Bitset size is 64
Bitset length is 0

現在,我仔細閱讀文檔是有道理的(前者的文檔大小包括實現開銷,而后者是最后一個設置的位,所有默認設置為false),但不是我想要的。

由於我實際使用的BitSet可以具有不同的長度,因此我希望能夠取回表示的位數(忽略是否設置)。 有沒有一種方法(希望使用內置方法)?

我意識到我可以嘗試翻轉所有位然后執行長度,或者通過跟蹤用於實例化BitSet的變量,但是由於我的原因,我覺得兩者都需要多行注釋,並且我希望自己做些更多的事情-記錄。

BitSet將自動擴展到足以代表其中最高位的大小; 初始大小只是有關您打算使用多少位的提示。 因此,您提出的問題毫無意義。

我在Mac上進行了一些測試,看來BitSet的長度希望是64的倍數。因此,對於您的BitSet大小為20,它默認為64。如果將大小設置為65,則應該看到一個長度設置為129。將其設置為129應該給您192。這應該給您一種計算“真實” BitSet長度的方法。

位集在內部使用長(64位)。 因此,您可以使用size()方法確定所需倍數的位數。

暫無
暫無

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

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