Как я могу получить количество бит, представленных BitSet? - PullRequest
0 голосов
/ 04 декабря 2011

Если я запускаю следующий код:

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, но я чувствую, что оба требуют нескольких строк комментариев с моими причинами, и я надеялся на что-то немного больше самодокументирования.

Ответы [ 3 ]

2 голосов
/ 04 декабря 2011

BitSet автоматически расширится до размера, достаточного для представления самого высокого установленного в нем бита;начальный размер - это просто подсказка относительно того, сколько бит вы собираетесь использовать.Так что твой вопрос не имеет смысла.

1 голос
/ 28 июня 2014

Я провел некоторое тестирование на своем Mac, и кажется, что длина BitSet хочет быть кратной 64. Таким образом, для вашего размера BitSet 20 он по умолчанию равен 64. Если вы установите размер 65, то вам следует см. длину 128. Установка этого значения в 129 даст вам 192. Это должно дать вам способ вычислить вашу «истинную» длину BitSet.

0 голосов
/ 04 декабря 2011

Bitset внутренне использует long (64 бита). Таким образом, вы можете определить количество бит, необходимое для умножения, используя метод size ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...