Package org.roaringbitmap.longlong
Class LongUtils
java.lang.Object
org.roaringbitmap.longlong.LongUtils
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic int
compareHigh
(byte[] a, byte[] b) compare according to the dictionary orderstatic long
fromBDBytes
(byte[] work) get the long from the big endian representation bytesstatic byte[]
highPart
(long num) get the high 48 bit parts of the input datastatic byte[]
highPartInPlace
(long num, byte[] high48) set the high 48 bit parts of the input number into the given byte arraystatic long
initWithFirst4Byte
(int v) initialize a long value with the given fist 32 bitstatic boolean
isMaxHigh
(byte[] high48) checks if given high48 is the maximum possible one (e.g.static long
leftShiftHighPart
(long num) shift the long by left the container size amount so we use the value after have done our stepsstatic char
lowPart
(long num) get the low 16 bit parts of the input datastatic int
static long
rightShiftHighPart
(long num) shift the long right by the container size amount so we can loop across containers by +1 stepsstatic byte[]
toBDBytes
(long v) to big endian bytes representationstatic long
toLong
(byte[] high, char low) reconstruct the long data
-
Field Details
-
MAX_UNSIGNED_INT
public static final long MAX_UNSIGNED_INT
-
-
Constructor Details
-
LongUtils
public LongUtils()
-
-
Method Details
-
highPart
public static byte[] highPart(long num) get the high 48 bit parts of the input data- Parameters:
num
- the long number- Returns:
- the high 48 bit
-
lowPart
public static char lowPart(long num) get the low 16 bit parts of the input data- Parameters:
num
- the long number- Returns:
- the low 16 bit
-
toLong
public static long toLong(byte[] high, char low) reconstruct the long data- Parameters:
high
- the high 48 bitlow
- the low 16 bit- Returns:
- the long data
-
toBDBytes
public static byte[] toBDBytes(long v) to big endian bytes representation- Parameters:
v
- a long value- Returns:
- the input long value's big endian byte array representation
-
fromBDBytes
public static long fromBDBytes(byte[] work) get the long from the big endian representation bytes- Parameters:
work
- the byte array- Returns:
- the long data
-
compareHigh
public static int compareHigh(byte[] a, byte[] b) compare according to the dictionary order- Parameters:
a
- a byte arrayb
- another byte array- Returns:
- 1 indicates a greater than b,0 indicates equal,-1 indicates a smaller than b
-
initWithFirst4Byte
public static long initWithFirst4Byte(int v) initialize a long value with the given fist 32 bit- Parameters:
v
- first 32 bit value- Returns:
- a long value
-
rightShiftHighPart
public static long rightShiftHighPart(long num) shift the long right by the container size amount so we can loop across containers by +1 steps- Parameters:
num
- long being treated as unsigned long- Returns:
- value shifted out of value space into container high part
-
leftShiftHighPart
public static long leftShiftHighPart(long num) shift the long by left the container size amount so we use the value after have done our steps- Parameters:
num
- uint48 to be shift back into uint64- Returns:
- value shifted out of container high part back into value space
-
maxLowBitAsInteger
public static int maxLowBitAsInteger() -
highPartInPlace
public static byte[] highPartInPlace(long num, byte[] high48) set the high 48 bit parts of the input number into the given byte array- Parameters:
num
- the long numberhigh48
- the byte array- Returns:
- the high 48 bit
-
isMaxHigh
public static boolean isMaxHigh(byte[] high48) checks if given high48 is the maximum possible one (e.g. it is the case for -1L, which is the maximum unsigned long)- Parameters:
high48
- the byte array- Returns:
- true if this the maximum high part
-