### Question:
Longs { public static long highestOneBit(long lng) { lng |= (lng >> 1); lng |= (lng >> 2); lng |= (lng >> 4); lng |= (lng >> 8); lng |= (lng >> 16); lng |= (lng >> 32); return (lng & ~(lng >>> 1)); }  static long decode(String string); static long parseLong(String string); static long parseLong(String string, int radix); static String toBinaryString(long l); static String toHexString(long l); static String toString(long l); static long highestOneBit(long lng); static long lowestOneBit(long lng); static int numberOfLeadingZeros(long lng); static int numberOfTrailingZeros(long lng); static int bitCount(long lng); static long rotateLeft(long lng, int distance); static long rotateRight(long lng, int distance); static long reverseBytes(long lng); static long reverse(long lng); static final long MAX_VALUE; static final long MIN_VALUE; }### Answer:
@Test public void test_highestOneBitJ() { assertEquals(0x08, Longs.highestOneBit(0x0A)); assertEquals(0x08, Longs.highestOneBit(0x0B)); assertEquals(0x08, Longs.highestOneBit(0x0C)); assertEquals(0x08, Longs.highestOneBit(0x0F)); assertEquals(0x80, Longs.highestOneBit(0xFF)); assertEquals(0x080000, Longs.highestOneBit(0x0F1234)); assertEquals(0x800000, Longs.highestOneBit(0xFF9977)); assertEquals(0x8000000000000000L, Longs.highestOneBit(0xFFFFFFFFFFFFFFFFL)); assertEquals(0, Longs.highestOneBit(0)); assertEquals(1, Longs.highestOneBit(1)); assertEquals(0x8000000000000000L, Longs.highestOneBit(-1)); }