コード例 #1
0
        public static uint Map(int src, int dest)
        {
            uint subsrc,
                 sumsub = 0,
                 _src   = (uint)src,
                 _dest  = (uint)dest;

            int  msbid   = (int)Bitscan.ReverseIndex32((uint)dest);
            uint bitmask = 0xFFFFFFFF >> (31 - msbid);

            for (; ;)
            {
                subsrc = (_src & bitmask);

                if (subsrc > _dest)
                {
                    subsrc -= _dest;
                }

                sumsub += subsrc;

                if (sumsub > _dest)
                {
                    sumsub -= _dest;
                }

                _src >>= msbid;

                if (_src == 0)
                {
                    return(sumsub);
                }
            }
        }
コード例 #2
0
        public static ulong Map(long src, long dest)
        {
            int   msbid = (int)Bitscan.ReverseIndex64((ulong)dest);
            ulong bitmask = 0xFFFFFFFFFFFFFFFF >> (63 - msbid);
            ulong subsrc, sumsub = 0, _src = (ulong)src, _dest = (ulong)dest;

            for (; ;)
            {
                subsrc = (_src & bitmask);

                if (subsrc > _dest)
                {
                    subsrc -= _dest;
                }

                sumsub += subsrc;

                if (sumsub > _dest)
                {
                    sumsub -= _dest;
                }

                _src >>= msbid;

                if (_src == 0)
                {
                    return(sumsub);
                }
            }
        }
コード例 #3
0
 public static int MsbId(ulong dest)
 {
     return((int)Bitscan.ReverseIndex64(dest));
 }
コード例 #4
0
        public static ulong Mask(ulong dest)
        {
            int msbId = (int)Bitscan.ReverseIndex64(dest);

            return(0xFFFFFFFFFFFFFFFF >> (63 - msbId));
        }
コード例 #5
0
 public static int MsbId(uint dest)
 {
     return((int)Bitscan.ReverseIndex32(dest));
 }
コード例 #6
0
        public static uint Mask(uint dest)
        {
            int msbid = (int)Bitscan.ReverseIndex32(dest);

            return(0xFFFFFFFF >> (31 - msbid));
        }