public final class BitString extends Object implements Cloneable, Serializable
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.
Modifier and Type | Class and 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 and Description |
---|
BitString(int nbits)
Creates an empty string with the specified size.
|
Modifier and Type | Method and 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 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()
Returns whether this
BitString 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 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. |
boolean |
minus(BitString set)
Logically subtracts this bit set with the specified set of bits.
|
int |
numberOfOnes()
Returns the number of ones in this
BitString . |
int |
numberOfOnes(int where)
Returns the number of ones in this
BitString up to a given index. |
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.
|
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 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.
|
BitString.ForwardBitStringZeroIterator |
zeroIterator() |
public BitString(int nbits)
nbits
- the size of the stringpublic int firstSet()
public int firstSet(int where)
where
in the
bit string which is set, or -1 if there is no such index.where
- the starting point for the search. May be negative.public static final byte popcount(int b)
b
- value to checkpublic static final byte popcount(long b)
b
- value to checkpublic static final int bsf(int b)
b
- value to checkpublic static final int bsr(int v)
v
- value to checkpublic int lastSet(int where)
where
in the
bit string which is set, or -1 if there is no such index.where
- the starting point for the search.public int lastSet()
public void setAll()
public void setUpTo(int bit)
bit
- the bit to be set up to (zero-based)public void setRange(int lo, int hi)
public void set(int bit)
bit
- the bit to be set (zero-based)public void clearAll()
public void clearUpTo(int bit)
bit
- the bit to be set up to (zero-based)public void clear(int bit)
bit
- the bit to be cleared (zero-based)public boolean get(int bit)
bit
- the bit to be gotten (zero-based)public boolean and(BitString set)
true
if this
was modified in
response to the operation.set
- the bit set to be ANDed withpublic boolean or(BitString set)
true
if this
was modified in
response to the operation.set
- the bit set to be ORed withpublic boolean or_upTo(BitString set, int bit)
true
if this
was modified in
response to the operation.set
- the bit set to be ORed withpublic boolean xor(BitString set)
true
if this
was modified in
response to the operation.set
- the bit set to be XORed withpublic boolean minus(BitString set)
true
if this
was modified in
response to the operation.set
- the bit set to subtractpublic boolean intersectionEmpty(BitString other)
other
- the set to check intersection withpublic boolean contains(BitString other)
other
- the set to check containment withpublic void shl(int amt)
amt
- number of bits to shift, can be negativepublic void shr(int amt)
amt
- number of bits to shiftpublic void copyBits(BitString set)
set
- the bit set to copy the bits frompublic int hashCode()
BitString
.public int length()
BitString
: the
index of the highest set bit in the BitString
plus
one. Returns zero if the BitString
contains no
set bits.public int size()
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.public boolean equals(Object obj)
public boolean isZero()
BitString
is all zeroes.public int numberOfOnes()
BitString
.public int numberOfOnes(int where)
BitString
up to a given index.public String toString()
public BitString.ForwardBitStringIterator iterator()
public BitString.ForwardBitStringZeroIterator zeroIterator()
public BitString.BackwardBitStringIterator backwardsIterator()
public BitString.BackwardBitStringIterator backwardsIterator(int i)
Copyright © 2020. All rights reserved.