public class BitField
extends java.lang.Object
int, short or
byte.
Each BitField is constructed with a mask value, which indicates
the bits that will be used to store and retrieve the data for that field.
For instance, the mask 0xFF indicates the least-significant byte
should be used to store the data.
As an example, consider a car painting machine that accepts paint instructions as integers. Bit fields can be used to encode this:
// blue, green and red are 1 byte values (0-255) stored in the three least
// significant bytes
BitField blue = new BitField(0xFF);
BitField green = new BitField(0xFF00);
BitField red = new BitField(0xFF0000);
// anyColor is a flag triggered if any color is used
BitField anyColor = new BitField(0xFFFFFF);
// isMetallic is a single bit flag
BitField isMetallic = new BitField(0x1000000);
Using these BitField instances, a paint instruction can be
encoded into an integer:
int paintInstruction = 0;
paintInstruction = red.setValue(paintInstruction, 35);
paintInstruction = green.setValue(paintInstruction, 100);
paintInstruction = blue.setValue(paintInstruction, 255);
Flags and data can be retrieved from the integer:
// Prints true if red, green or blue is non-zero
System.out.println(anyColor.isSet(paintInstruction)); // prints true
// Prints value of red, green and blue
System.out.println(red.getValue(paintInstruction)); // prints 35
System.out.println(green.getValue(paintInstruction)); // prints 100
System.out.println(blue.getValue(paintInstruction)); // prints 255
// Prints true if isMetallic was set
System.out.println(isMetallic.isSet(paintInstruction)); // prints false
| Constructor and Description |
|---|
BitField(int mask)
Creates a BitField instance.
|
| Modifier and Type | Method and Description |
|---|---|
int |
clear(int holder)
Clears the bits.
|
byte |
clearByte(byte holder)
Clears the bits.
|
short |
clearShort(short holder)
Clears the bits.
|
int |
getRawValue(int holder)
Obtains the value for the specified BitField, unshifted.
|
short |
getShortRawValue(short holder)
Obtains the value for the specified BitField, unshifted.
|
short |
getShortValue(short holder)
Obtains the value for the specified BitField, appropriately
shifted right, as a short.
|
int |
getValue(int holder)
Obtains the value for the specified BitField, appropriately
shifted right.
|
boolean |
isAllSet(int holder)
Returns whether all of the bits are set or not.
|
boolean |
isSet(int holder)
Returns whether the field is set or not.
|
int |
set(int holder)
Sets the bits.
|
int |
setBoolean(int holder,
boolean flag)
Sets a boolean BitField.
|
byte |
setByte(byte holder)
Sets the bits.
|
byte |
setByteBoolean(byte holder,
boolean flag)
Sets a boolean BitField.
|
short |
setShort(short holder)
Sets the bits.
|
short |
setShortBoolean(short holder,
boolean flag)
Sets a boolean BitField.
|
short |
setShortValue(short holder,
short value)
Replaces the bits with new values.
|
int |
setValue(int holder,
int value)
Replaces the bits with new values.
|
public BitField(int mask)
mask - the mask specifying which bits apply to this
BitField. Bits that are set in this mask are the bits
that this BitField operates onpublic int getValue(int holder)
Many users of a BitField will want to treat the specified bits as an int value, and will not want to be aware that the value is stored as a BitField (and so shifted left so many bits).
holder - the int data containing the bits we're interested
insetValue(int,int)public short getShortValue(short holder)
Many users of a BitField will want to treat the specified bits as an int value, and will not want to be aware that the value is stored as a BitField (and so shifted left so many bits).
holder - the short data containing the bits we're
interested insetShortValue(short,short)public int getRawValue(int holder)
holder - the int data containing the bits we're
interested inpublic short getShortRawValue(short holder)
holder - the short data containing the bits we're
interested inpublic boolean isSet(int holder)
This is most commonly used for a single-bit field, which is often used to represent a boolean value; the results of using it for a multi-bit field is to determine whether *any* of its bits are set.
holder - the int data containing the bits we're interested
intrue if any of the bits are set,
else falsepublic boolean isAllSet(int holder)
This is a stricter test than isSet(int),
in that all of the bits in a multi-bit set must be set
for this method to return true.
holder - the int data containing the bits we're
interested intrue if all of the bits are set,
else falsepublic int setValue(int holder,
int value)
holder - the int data containing the bits we're
interested invalue - the new value for the specified bitsgetValue(int)public short setShortValue(short holder,
short value)
holder - the short data containing the bits we're
interested invalue - the new value for the specified bitsgetShortValue(short)public int clear(int holder)
holder - the int data containing the bits we're
interested in0)public short clearShort(short holder)
holder - the short data containing the bits we're
interested in0)public byte clearByte(byte holder)
holder - the byte data containing the bits we're
interested in0)public int set(int holder)
holder - the int data containing the bits we're
interested in1public short setShort(short holder)
holder - the short data containing the bits we're
interested in1public byte setByte(byte holder)
holder - the byte data containing the bits we're
interested in1public int setBoolean(int holder,
boolean flag)
holder - the int data containing the bits we're
interested inflag - indicating whether to set or clear the bitspublic short setShortBoolean(short holder,
boolean flag)
holder - the short data containing the bits we're
interested inflag - indicating whether to set or clear the bitspublic byte setByteBoolean(byte holder,
boolean flag)
holder - the byte data containing the bits we're
interested inflag - indicating whether to set or clear the bitsCopyright © 2010 - 2023 Adobe. All Rights Reserved