public void Test_NumberOfLeadingZeros_Int64() { assertEquals(64L, BitOperation.LeadingZeroCount(0x0L)); assertEquals(63L, BitOperation.LeadingZeroCount(0x1L)); assertEquals(62L, BitOperation.LeadingZeroCount(0x2L)); assertEquals(62L, BitOperation.LeadingZeroCount(0x3L)); assertEquals(61L, BitOperation.LeadingZeroCount(0x4L)); assertEquals(61L, BitOperation.LeadingZeroCount(0x5L)); assertEquals(61L, BitOperation.LeadingZeroCount(0x6L)); assertEquals(61L, BitOperation.LeadingZeroCount(0x7L)); assertEquals(60L, BitOperation.LeadingZeroCount(0x8L)); assertEquals(60L, BitOperation.LeadingZeroCount(0x9L)); assertEquals(60L, BitOperation.LeadingZeroCount(0xAL)); assertEquals(60L, BitOperation.LeadingZeroCount(0xBL)); assertEquals(60L, BitOperation.LeadingZeroCount(0xCL)); assertEquals(60L, BitOperation.LeadingZeroCount(0xDL)); assertEquals(60L, BitOperation.LeadingZeroCount(0xEL)); assertEquals(60L, BitOperation.LeadingZeroCount(0xFL)); assertEquals(59L, BitOperation.LeadingZeroCount(0x10L)); assertEquals(56L, BitOperation.LeadingZeroCount(0x80L)); assertEquals(56L, BitOperation.LeadingZeroCount(0xF0L)); assertEquals(55L, BitOperation.LeadingZeroCount(0x100L)); assertEquals(52L, BitOperation.LeadingZeroCount(0x800L)); assertEquals(52L, BitOperation.LeadingZeroCount(0xF00L)); assertEquals(51L, BitOperation.LeadingZeroCount(0x1000L)); assertEquals(48L, BitOperation.LeadingZeroCount(0x8000L)); assertEquals(48L, BitOperation.LeadingZeroCount(0xF000L)); assertEquals(47L, BitOperation.LeadingZeroCount(0x10000L)); assertEquals(44L, BitOperation.LeadingZeroCount(0x80000L)); assertEquals(44L, BitOperation.LeadingZeroCount(0xF0000L)); assertEquals(43L, BitOperation.LeadingZeroCount(0x100000L)); assertEquals(40L, BitOperation.LeadingZeroCount(0x800000L)); assertEquals(40L, BitOperation.LeadingZeroCount(0xF00000L)); assertEquals(39L, BitOperation.LeadingZeroCount(0x1000000L)); assertEquals(36L, BitOperation.LeadingZeroCount(0x8000000L)); assertEquals(36L, BitOperation.LeadingZeroCount(0xF000000L)); assertEquals(35L, BitOperation.LeadingZeroCount(0x10000000L)); assertEquals(32L, BitOperation.LeadingZeroCount(0x80000000L)); // J2N: Changed test to match observed behavior in JDK (32L rather than 0L) assertEquals(32L, BitOperation.LeadingZeroCount(0xF0000000L)); // J2N: Changed test to match observed behavior in JDK (32L rather than 0L) assertEquals(1L, BitOperation.LeadingZeroCount(long.MaxValue)); assertEquals(0L, BitOperation.LeadingZeroCount(long.MinValue)); }
public void Test_NumberOfLeadingZeros_Int32() { assertEquals(32, BitOperation.LeadingZeroCount(0x0)); assertEquals(31, BitOperation.LeadingZeroCount(0x1)); assertEquals(30, BitOperation.LeadingZeroCount(0x2)); assertEquals(30, BitOperation.LeadingZeroCount(0x3)); assertEquals(29, BitOperation.LeadingZeroCount(0x4)); assertEquals(29, BitOperation.LeadingZeroCount(0x5)); assertEquals(29, BitOperation.LeadingZeroCount(0x6)); assertEquals(29, BitOperation.LeadingZeroCount(0x7)); assertEquals(28, BitOperation.LeadingZeroCount(0x8)); assertEquals(28, BitOperation.LeadingZeroCount(0x9)); assertEquals(28, BitOperation.LeadingZeroCount(0xA)); assertEquals(28, BitOperation.LeadingZeroCount(0xB)); assertEquals(28, BitOperation.LeadingZeroCount(0xC)); assertEquals(28, BitOperation.LeadingZeroCount(0xD)); assertEquals(28, BitOperation.LeadingZeroCount(0xE)); assertEquals(28, BitOperation.LeadingZeroCount(0xF)); assertEquals(27, BitOperation.LeadingZeroCount(0x10)); assertEquals(24, BitOperation.LeadingZeroCount(0x80)); assertEquals(24, BitOperation.LeadingZeroCount(0xF0)); assertEquals(23, BitOperation.LeadingZeroCount(0x100)); assertEquals(20, BitOperation.LeadingZeroCount(0x800)); assertEquals(20, BitOperation.LeadingZeroCount(0xF00)); assertEquals(19, BitOperation.LeadingZeroCount(0x1000)); assertEquals(16, BitOperation.LeadingZeroCount(0x8000)); assertEquals(16, BitOperation.LeadingZeroCount(0xF000)); assertEquals(15, BitOperation.LeadingZeroCount(0x10000)); assertEquals(12, BitOperation.LeadingZeroCount(0x80000)); assertEquals(12, BitOperation.LeadingZeroCount(0xF0000)); assertEquals(11, BitOperation.LeadingZeroCount(0x100000)); assertEquals(8, BitOperation.LeadingZeroCount(0x800000)); assertEquals(8, BitOperation.LeadingZeroCount(0xF00000)); assertEquals(7, BitOperation.LeadingZeroCount(0x1000000)); assertEquals(4, BitOperation.LeadingZeroCount(0x8000000)); assertEquals(4, BitOperation.LeadingZeroCount(0xF000000)); assertEquals(3, BitOperation.LeadingZeroCount(0x10000000)); assertEquals(0, BitOperation.LeadingZeroCount(unchecked ((int)0x80000000))); assertEquals(0, BitOperation.LeadingZeroCount(unchecked ((int)0xF0000000))); assertEquals(1, BitOperation.LeadingZeroCount(int.MaxValue)); assertEquals(0, BitOperation.LeadingZeroCount(int.MinValue)); }