Exemple #1
0
        /// <summary>
        ///  从低位向高位扫描,返回第一次出现1的位置,同时将该位置为0
        ///  例如:二进制数 (高位在右)0001001001100(低位在左),返回2,同时bb更改为0001001001000
        /// </summary>
        /// <param name="u64">一个64位整数,注意:不能为0</param>
        /// <returns>返回值从0到63, 最低的1所在的位置</returns>
        public static int BitScanForwardWithReset(ref ulong u64)
        { // also called dropForward
            int idx = BitHack64.BitScanForward(u64);

            u64 &= u64 - 1; // reset bit outside
            return(idx);
        }