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 false
public 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 false
public 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 in1
public short setShort(short holder)
holder
- the short data containing the bits we're
interested in1
public byte setByte(byte holder)
holder
- the byte data containing the bits we're
interested in1
public 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