Class BitString
- All Implemented Interfaces:
Serializable
,Cloneable
BitString
implements a vector of bits much like java.util.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.
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.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclass
Iterator for iterating through a bit string in backward order.static class
Abstract bit string iterator class.class
Iterator for iterating through a bit string in forward order.class
Iterator for iterating through a bit string in forward order. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
Logically ANDs this bit set with the specified set of bits.Returns an iterator that iterates through the bits in backward order.backwardsIterator
(int i) Returns an iterator that iterates through the bits in backward order, starting at the given index.static final int
bsf
(int b) Utility function to return the index of the first (lowest-order) one bit in the given integer.static final 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.clone()
Clones the BitString.boolean
Check if this set contains all bits of the given set.void
Copies the values of the bits in the specified set into this set.boolean
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.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
Logically subtracts this bit set with the specified set of bits.int
Returns the number of ones in thisBitString
.int
numberOfOnes
(int where) Returns the number of ones in thisBitString
up to a given index.boolean
Logically ORs this bit set with the specified set of bits.boolean
Logically ORs this bit set with the specified set of bits.static final byte
popcount
(int b) Utility function to return the number of 1 bits in the given integer value.static final 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.toString()
Converts the BitString to a String.boolean
Logically XORs this bit set with the specified set of bits.
-
Constructor Details
-
BitString
public BitString(int nbits) Creates an empty string with the specified size.- Parameters:
nbits
- the size of the string
-
-
Method Details
-
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
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
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
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 withbit
- set of bits- Returns:
- modified
-
xor
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
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
Check if the intersection of the two sets is empty.- Parameters:
other
- the set to check intersection with- Returns:
- is empty or not
-
contains
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
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
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.- Parameters:
where
- given index- Returns:
- number of bits set.
-
clone
Clones the BitString. -
toString
Converts the BitString to a String. -
iterator
Returns an iterator that iterates through the bits in forward order.- Returns:
- an iterator
-
zeroIterator
-
backwardsIterator
Returns an iterator that iterates through the bits in backward order.- Returns:
- an iterator
-
backwardsIterator
Returns an iterator that iterates through the bits in backward order, starting at the given index.- Parameters:
i
- given index- Returns:
- an iterator
-