示例#1
0
        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));
        }
示例#2
0
        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));
        }