Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old August 16th, 2007, 12:25 PM
Mothra
Guest
 
Posts: n/a
Default Problem with BitSet.length()...

.... is that it does not return the length of the bit set. For example, if
I create a new 8-bit set:

BitSet eightBits = new BitSet(8);


Running eightBits.length() returns zero, rather than eight.

The problem is that I want to be able to convert the bit set back to an
integer at some point. I thought the easiest way would be to iterate
backwards over the bit set thus:

private static int bitsToInt(BitSet bits) {
int myInt = 0;
int binColumn = 1;

// loop over the bitset backwards, adding up the true values
for (int i=(bits.length()-1); i>=0; i--) {
myInt += (booleanToInt(bits.get(i)) * binColumn);
binColumn = (binColumn * 2);
}

return myInt;
}

But because BitSet.length only returns the length from the highest
bit that's set to "true", this doesn't work for any binary numbers that
start with zeros in the full bit set (e.g. an 8-bit set of '00111000').

I suppose my method could take in a 'length' parameter that I coul define,
but isn't there a neater way of getting the true length of a BitSet?
  #2  
Old August 16th, 2007, 10:35 PM
Joshua Cranmer
Guest
 
Posts: n/a
Default Re: Problem with BitSet.length()...

Mothra wrote:
Quote:
Running eightBits.length() returns zero, rather than eight.
Logically speaking, if length() returns the perceived size and not the
actual size, then there would be a function that returns the actual size
if it might be pertinent. This function would also have a name similar
to "length", like "capacity" or "size". Capacity is used for both
ArrayList and String{Builder,Buffer}, for example. Searching the
Javadocs for BitSet reveals this (in the function summary table):

size() - Returns the number of bits of space actually in use by this
BitSet to represent bit values.
Quote:
private static int bitsToInt(BitSet bits) {
What if BitSet.size() 32?


--
Beware of bugs in the above code; I have only proved it correct, not
tried it. -- Donald E. Knuth
 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles