Class BitString
- java.lang.Object
-
- com.github.javabdd.BitString
-
- All Implemented Interfaces:
Serializable
,Cloneable
public final class BitString extends Object implements Cloneable, Serializable
BitString
implements a vector of bits much likejava.util.BitSet
, except that this implementation actually works. Also,BitString
has some groovy features whichBitSet
doesn't; mostly related to efficient iteration overtrue
andfalse
components.Each component of the
BitString
has a boolean value. The bits of aBitString
are indexed by non-negative integers (that means they are zero-based, of course). Individual indexed bits can be examined, set, or cleared. OneBitString
may be used to modify the contents of anotherBitString
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.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
BitString.BackwardBitStringIterator
Iterator for iterating through a bit string in backward order.static class
BitString.BitStringIterator
Abstract bit string iterator class.class
BitString.ForwardBitStringIterator
Iterator for iterating through a bit string in forward order.class
BitString.ForwardBitStringZeroIterator
Iterator for iterating through a bit string in forward order.
-
Constructor Summary
Constructors Constructor Description BitString(int nbits)
Creates an empty string with the specified size.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
and(BitString set)
Logically ANDs this bit set with the specified set of bits.BitString.BackwardBitStringIterator
backwardsIterator()
Returns an iterator that iterates through the bits in backward order.BitString.BackwardBitStringIterator
backwardsIterator(int i)
Returns an iterator that iterates through the bits in backward order, starting at the given index.static int
bsf(int b)
Utility function to return the index of the first (lowest-order) one bit in the given integer.static int
bsr(int v)
Utility function to return the index of the last one bit in the given integer.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.Object
clone()
Clones the BitString.boolean
contains(BitString other)
Check if this set contains all bits of the given set.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 thanwhere
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 thisBitString
.boolean
intersectionEmpty(BitString other)
Check if the intersection of the two sets is empty.boolean
isZero()
Returns whether thisBitString
is all zeroes.BitString.ForwardBitStringIterator
iterator()
Returns an iterator that iterates through the bits in forward order.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 thanwhere
in the bit string which is set, or -1 if there is no such index.int
length()
Returns the "logical size" of thisBitString
: the index of the highest set bit in theBitString
plus one.boolean
minus(BitString set)
Logically subtracts this bit set with the specified set of bits.int
numberOfOnes()
Returns the number of ones in thisBitString
.int
numberOfOnes(int where)
Returns the number of ones in thisBitString
up to a given index.boolean
or(BitString set)
Logically ORs this bit set with the specified set of bits.boolean
or_upTo(BitString set, int bit)
Logically ORs this bit set with the specified set of bits.static byte
popcount(int b)
Utility function to return the number of 1 bits in the given integer value.static byte
popcount(long b)
Utility function to return the number of 1 bits in the given long value.void
set(int bit)
Sets a bit.void
setAll()
Sets all bits.void
setRange(int lo, int hi)
void
setUpTo(int bit)
Sets all bits up to and including the given bit.void
shl(int amt)
Performs a left-shift operation.void
shr(int amt)
Performs a right-shift operation.int
size()
Returns the number of bits of space actually in use by thisBitString
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.BitString.ForwardBitStringZeroIterator
zeroIterator()
-
-
-
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.- Returns:
- the first index
-
firstSet
public int firstSet(int where)
Returns the first index greater thanwhere
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.- Returns:
- the first index
-
popcount
public static final byte popcount(int b)
Utility function to return the number of 1 bits in the given integer value.- Parameters:
b
- value to check- Returns:
- byte number of one bits
-
popcount
public static final byte popcount(long b)
Utility function to return the number of 1 bits in the given long value.- Parameters:
b
- value to check- Returns:
- byte number of one bits
-
bsf
public static final int bsf(int b)
Utility function to return the index of the first (lowest-order) one bit in the given integer. Returns zero if the given number is zero.- Parameters:
b
- value to check- Returns:
- byte index of first one bit, or zero if the number is zero
-
bsr
public static final int bsr(int v)
Utility function to return the index of the last one bit in the given integer. Returns zero if the given number is zero.- Parameters:
v
- value to check- Returns:
- byte index of first one bit, or zero if the number is zero
-
lastSet
public int lastSet(int where)
Returns the last index less thanwhere
in the bit string which is set, or -1 if there is no such index.- Parameters:
where
- the starting point for the search.- Returns:
- last index
-
lastSet
public int lastSet()
Returns the last index in the bit string which is set, or -1 if there is no such index.- Returns:
- last 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)
-
setRange
public void setRange(int lo, int hi)
-
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)- Returns:
- the bit
-
and
public boolean and(BitString set)
Logically ANDs this bit set with the specified set of bits. Returnstrue
ifthis
was modified in response to the operation.- Parameters:
set
- the bit set to be ANDed with- Returns:
- modified
-
or
public boolean or(BitString set)
Logically ORs this bit set with the specified set of bits. Returnstrue
ifthis
was modified in response to the operation.- Parameters:
set
- the bit set to be ORed with- Returns:
- modified
-
or_upTo
public boolean or_upTo(BitString set, int bit)
Logically ORs this bit set with the specified set of bits. Returnstrue
ifthis
was modified in response to the operation.- Parameters:
set
- the bit set to be ORed with- Returns:
- modified
-
xor
public boolean xor(BitString set)
Logically XORs this bit set with the specified set of bits. Returnstrue
ifthis
was modified in response to the operation.- Parameters:
set
- the bit set to be XORed with- Returns:
- modified
-
minus
public boolean minus(BitString set)
Logically subtracts this bit set with the specified set of bits. Returnstrue
ifthis
was modified in response to the operation.- Parameters:
set
- the bit set to subtract- Returns:
- modified
-
intersectionEmpty
public boolean intersectionEmpty(BitString other)
Check if the intersection of the two sets is empty.- Parameters:
other
- the set to check intersection with- Returns:
- is empty or not
-
contains
public boolean contains(BitString other)
Check if this set contains all bits of the given set.- Parameters:
other
- the set to check containment with- Returns:
- contains or not
-
shl
public void shl(int amt)
Performs a left-shift operation.- Parameters:
amt
- number of bits to shift, can be negative
-
shr
public void shr(int amt)
Performs a right-shift operation.- Parameters:
amt
- number of bits to shift
-
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 thisBitString
.
-
length
public int length()
Returns the "logical size" of thisBitString
: the index of the highest set bit in theBitString
plus one. Returns zero if theBitString
contains no set bits.- Returns:
- logical size
-
size
public int size()
Returns the number of bits of space actually in use by thisBitString
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.- Returns:
- number of bits
-
equals
public boolean equals(Object obj)
Compares this object against the specified object.
-
isZero
public boolean isZero()
Returns whether thisBitString
is all zeroes.- Returns:
- true if it is all zeroes.
-
numberOfOnes
public int numberOfOnes()
Returns the number of ones in thisBitString
.- Returns:
- number of bits set.
-
numberOfOnes
public int numberOfOnes(int where)
Returns the number of ones in thisBitString
up to a given index.- Returns:
- number of bits set.
-
toString
public String toString()
Converts the BitString to a String.
-
iterator
public BitString.ForwardBitStringIterator iterator()
Returns an iterator that iterates through the bits in forward order.- Returns:
- an iterator
-
zeroIterator
public BitString.ForwardBitStringZeroIterator zeroIterator()
-
backwardsIterator
public BitString.BackwardBitStringIterator backwardsIterator()
Returns an iterator that iterates through the bits in backward order.- Returns:
- an iterator
-
backwardsIterator
public BitString.BackwardBitStringIterator backwardsIterator(int i)
Returns an iterator that iterates through the bits in backward order, starting at the given index.- Returns:
- an iterator
-
-