Class BitUtil

java.lang.Object
org.apache.lucene.util.BitUtil

public final class BitUtil extends Object
A variety of high efficiency bit twiddling routines and encoders for primitives.
NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.
  • Field Details

    • VH_LE_SHORT

      public static final VarHandle VH_LE_SHORT
      A VarHandle to read/write little endian short from/to a byte array. Shape: short vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, short val)
    • VH_LE_INT

      public static final VarHandle VH_LE_INT
      A VarHandle to read/write little endian int from a byte array. Shape: int vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, int val)
    • VH_LE_LONG

      public static final VarHandle VH_LE_LONG
      A VarHandle to read/write little endian long from a byte array. Shape: long vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, long val)
    • VH_LE_FLOAT

      public static final VarHandle VH_LE_FLOAT
      A VarHandle to read/write little endian float from a byte array. Shape: float vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, float val)
    • VH_LE_DOUBLE

      public static final VarHandle VH_LE_DOUBLE
      A VarHandle to read/write little endian double from a byte array. Shape: double vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, double val)
    • VH_BE_SHORT

      @Deprecated public static final VarHandle VH_BE_SHORT
      Deprecated.
      Better use little endian unless it is needed for backwards compatibility.
      A VarHandle to read/write big endian short from a byte array. Shape: short vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, short val)
    • VH_BE_INT

      @Deprecated public static final VarHandle VH_BE_INT
      Deprecated.
      Better use little endian unless it is needed for backwards compatibility.
      A VarHandle to read/write big endian int from a byte array. Shape: int vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, int val)
    • VH_BE_LONG

      @Deprecated public static final VarHandle VH_BE_LONG
      Deprecated.
      Better use little endian unless it is needed for backwards compatibility.
      A VarHandle to read/write big endian long from a byte array. Shape: long vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, long val)
    • VH_BE_FLOAT

      @Deprecated public static final VarHandle VH_BE_FLOAT
      Deprecated.
      Better use little endian unless it is needed for backwards compatibility.
      A VarHandle to read/write big endian float from a byte array. Shape: float vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, float val)
    • VH_BE_DOUBLE

      @Deprecated public static final VarHandle VH_BE_DOUBLE
      Deprecated.
      Better use little endian unless it is needed for backwards compatibility.
      A VarHandle to read/write big endian double from a byte array. Shape: double vh.get(byte[] arr, int ofs) and void vh.set(byte[] arr, int ofs, double val)
  • Method Details

    • nextHighestPowerOfTwo

      public static int nextHighestPowerOfTwo(int v)
      returns the next highest power of two, or the current value if it's already a power of two or zero
    • nextHighestPowerOfTwo

      public static long nextHighestPowerOfTwo(long v)
      returns the next highest power of two, or the current value if it's already a power of two or zero
    • interleave

      public static long interleave(int even, int odd)
      Interleaves the first 32 bits of each long value

      Adapted from: http://graphics.stanford.edu/~seander/bithacks.html#InterleaveBMN

    • deinterleave

      public static long deinterleave(long b)
      Extract just the even-bits value as a long from the bit-interleaved value
    • flipFlop

      public static long flipFlop(long b)
      flip flops odd with even bits
    • zigZagEncode

      public static int zigZagEncode(int i)
      Same as zigZagEncode(long) but on integers.
    • zigZagEncode

      public static long zigZagEncode(long l)
      Zig-zag encode the provided long. Assuming the input is a signed long whose absolute value can be stored on n bits, the returned value will be an unsigned long that can be stored on n+1 bits.
    • zigZagDecode

      public static int zigZagDecode(int i)
      Decode an int previously encoded with zigZagEncode(int).
    • zigZagDecode

      public static long zigZagDecode(long l)
      Decode a long previously encoded with zigZagEncode(long).