JUtil

net.cscott.jutil
Class BitString

java.lang.Object
  extended by net.cscott.jutil.BitString
All Implemented Interfaces:
Serializable, Cloneable

public final class BitString
extends Object
implements Cloneable, Serializable

BitString implements a vector of bits ; much like BitSet... except that this implementation actually works. Also, BitString has some groovy features which BitSet doesn't; mostly related to efficient iteration over true and false components, I think.

Each component of the BitString has a boolean value. The bits of a BitString are indexed by non-negative integers (that means they are zero-based, of course). Individual indexed bits can be examined, set, or cleared. One BitString may be used to modify the contents of another BitString through logical AND, logical inclusive OR, and logical exclusive OR operations.

By default, all bits in the set initially have the value false.

Every bit set has a current size, which is the number of bits of space currently in use by the bit set. Note that the size is related to the implementation of a bit set, so it may change with implementation. The length of a bit set related to the logical length of a bit set and is defined independently of implementation.

Version:
$Id: BitString.java,v 1.3 2006-10-30 19:58:05 cananian Exp $
Author:
John Whaley
See Also:
Serialized Form

Constructor Summary
BitString(int nbits)
          Creates an empty string with the specified size.
 
Method Summary
 boolean and(BitString set)
          Logically ANDs this bit set with the specified set of bits.
 void clear(int bit)
          Clears a bit.
 void clearAll()
          Clears all bits.
 void clearUpTo(int bit)
          Clears all bits up to and including the given bit.
 BitString clone()
          Clones the BitString.
 void copyBits(BitString set)
          Copies the values of the bits in the specified set into this set.
 boolean equals(Object obj)
          Compares this object against the specified object.
 int firstSet()
          Returns the first index in the bit string which is set, or -1 if there is no such index.
 int firstSet(int where)
          Returns the first index greater than where in the bit string which is set, or -1 if there is no such index.
 boolean get(int bit)
          Gets a bit.
 int hashCode()
          Returns a hash code value for this bit string whose value depends only on which bits have been set within this BitString.
 boolean intersectionEmpty(BitString other)
          Check if the intersection of the two sets is empty
 boolean isZero()
           
 int lastSet()
          Returns the last index in the bit string which is set, or -1 if there is no such index.
 int lastSet(int where)
          Returns the last index less than where in the bit string which is set, or -1 if there is no such index.
 int length()
          Returns the "logical size" of this BitString: the index of the highest set bit in the BitString plus one.
static void main(String[] argv)
          Self-test function.
 int numberOfOnes()
           
 int numberOfOnes(int where)
           
 boolean or_upTo(BitString set, int bit)
          Logically ORs this bit set with the specified set of bits.
 boolean or(BitString set)
          Logically ORs this bit set with the specified set of bits.
 void set(int bit)
          Sets a bit.
 void setAll()
          Sets all bits.
 void setUpTo(int bit)
          Sets all bits up to and including the given bit.
 int size()
          Returns the number of bits of space actually in use by this BitString to represent bit values.
 String toString()
          Converts the BitString to a String.
 boolean xor(BitString set)
          Logically XORs this bit set with the specified set of bits.
 
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

BitString

public BitString(int nbits)
Creates an empty string with the specified size.

Parameters:
nbits - the size of the string
Method Detail

firstSet

public int firstSet()
Returns the first index in the bit string which is set, or -1 if there is no such index.


firstSet

public int firstSet(int where)
Returns the first index greater than where in the bit string which is set, or -1 if there is no such index.

Parameters:
where - the starting point for the search. May be negative.

lastSet

public int lastSet(int where)
Returns the last index less than where in the bit string which is set, or -1 if there is no such index.

Parameters:
where - the starting point for the search.

lastSet

public int lastSet()
Returns the last index in the bit string which is set, or -1 if there is no such index.


setAll

public void setAll()
Sets all bits.


setUpTo

public void setUpTo(int bit)
Sets all bits up to and including the given bit.

Parameters:
bit - the bit to be set up to (zero-based)

set

public void set(int bit)
Sets a bit.

Parameters:
bit - the bit to be set (zero-based)

clearAll

public void clearAll()
Clears all bits.


clearUpTo

public void clearUpTo(int bit)
Clears all bits up to and including the given bit.

Parameters:
bit - the bit to be set up to (zero-based)

clear

public void clear(int bit)
Clears a bit.

Parameters:
bit - the bit to be cleared (zero-based)

get

public boolean get(int bit)
Gets a bit.

Parameters:
bit - the bit to be gotten (zero-based)

and

public boolean and(BitString set)
Logically ANDs this bit set with the specified set of bits. Returns true if this was modified in response to the operation.

Parameters:
set - the bit set to be ANDed with

or

public boolean or(BitString set)
Logically ORs this bit set with the specified set of bits. Returns true if this was modified in response to the operation.

Parameters:
set - the bit set to be ORed with

or_upTo

public boolean or_upTo(BitString set,
                       int bit)
Logically ORs this bit set with the specified set of bits. Returns true if this was modified in response to the operation.

Parameters:
set - the bit set to be ORed with

xor

public boolean xor(BitString set)
Logically XORs this bit set with the specified set of bits. Returns true if this was modified in response to the operation.

Parameters:
set - the bit set to be XORed with

intersectionEmpty

public boolean intersectionEmpty(BitString other)
Check if the intersection of the two sets is empty

Parameters:
other - the set to check intersection with

copyBits

public void copyBits(BitString set)
Copies the values of the bits in the specified set into this set.

Parameters:
set - the bit set to copy the bits from

hashCode

public int hashCode()
Returns a hash code value for this bit string whose value depends only on which bits have been set within this BitString.

Overrides:
hashCode in class Object

length

public int length()
Returns the "logical size" of this BitString: the index of the highest set bit in the BitString plus one. Returns zero if the BitString contains no set bits.


size

public int size()
Returns the number of bits of space actually in use by this BitString to represent bit values. The maximum element in the set is the size - 1st element. The minimum element in the set is the zero'th element.


equals

public boolean equals(Object obj)
Compares this object against the specified object.

Overrides:
equals in class Object
Parameters:
obj - the object to compare with
Returns:
true if the contents of the bitsets are the same; false otherwise.

isZero

public boolean isZero()

numberOfOnes

public int numberOfOnes()

numberOfOnes

public int numberOfOnes(int where)

clone

public BitString clone()
Clones the BitString.

Overrides:
clone in class Object

toString

public String toString()
Converts the BitString to a String.

Overrides:
toString in class Object

main

public static void main(String[] argv)
Self-test function.


JUtil

Copyright (c) 2006 C. Scott Ananian