org.apache.lucene.util
Class BitUtil

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

public final class BitUtil
extends Object

A variety of high efficiency bit twiddling routines.

NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

Field Summary
static byte[] nlzTable
          table of number of leading zeros in a byte
static byte[] ntzTable
          table of number of trailing zeros in a byte
 
Method Summary
static boolean isPowerOfTwo(int v)
          returns true if v is a power of two or zero
static boolean isPowerOfTwo(long v)
          returns true if v is a power of two or zero
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
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
static int nlz(long x)
          Returns the number of leading zero bits.
static int ntz(int val)
          Returns number of trailing zeros in a 32 bit int value.
static int ntz(long val)
          Returns number of trailing zeros in a 64 bit long value.
static int ntz2(long x)
          returns 0 based index of first set bit (only works for x!=0)
This is an alternate implementation of ntz()
static int ntz3(long x)
          returns 0 based index of first set bit
This is an alternate implementation of ntz()
static long pop_andnot(long[] A, long[] B, int wordOffset, int numWords)
          Returns the popcount or cardinality of A & ~B Neither array is modified.
static long pop_array(long[] A, int wordOffset, int numWords)
          Returns the number of set bits in an array of longs.
static long pop_intersect(long[] A, long[] B, int wordOffset, int numWords)
          Returns the popcount or cardinality of the two sets after an intersection.
static long pop_union(long[] A, long[] B, int wordOffset, int numWords)
          Returns the popcount or cardinality of the union of two sets.
static long pop_xor(long[] A, long[] B, int wordOffset, int numWords)
           
static int pop(long x)
          Returns the number of bits set in the long
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ntzTable

public static final byte[] ntzTable
table of number of trailing zeros in a byte


nlzTable

public static final byte[] nlzTable
table of number of leading zeros in a byte

Method Detail

pop

public static int pop(long x)
Returns the number of bits set in the long


pop_array

public static long pop_array(long[] A,
                             int wordOffset,
                             int numWords)
Returns the number of set bits in an array of longs.


pop_intersect

public static long pop_intersect(long[] A,
                                 long[] B,
                                 int wordOffset,
                                 int numWords)
Returns the popcount or cardinality of the two sets after an intersection. Neither array is modified.


pop_union

public static long pop_union(long[] A,
                             long[] B,
                             int wordOffset,
                             int numWords)
Returns the popcount or cardinality of the union of two sets. Neither array is modified.


pop_andnot

public static long pop_andnot(long[] A,
                              long[] B,
                              int wordOffset,
                              int numWords)
Returns the popcount or cardinality of A & ~B Neither array is modified.


pop_xor

public static long pop_xor(long[] A,
                           long[] B,
                           int wordOffset,
                           int numWords)

ntz

public static int ntz(long val)
Returns number of trailing zeros in a 64 bit long value.


ntz

public static int ntz(int val)
Returns number of trailing zeros in a 32 bit int value.


ntz2

public static int ntz2(long x)
returns 0 based index of first set bit (only works for x!=0)
This is an alternate implementation of ntz()


ntz3

public static int ntz3(long x)
returns 0 based index of first set bit
This is an alternate implementation of ntz()


nlz

public static int nlz(long x)
Returns the number of leading zero bits.


isPowerOfTwo

public static boolean isPowerOfTwo(int v)
returns true if v is a power of two or zero


isPowerOfTwo

public static boolean isPowerOfTwo(long v)
returns true if v is a power of two or zero


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