BaseNcoding.Base.LogBase2 C# (CSharp) Method

LogBase2() public static method

public static LogBase2 ( uint x ) : int
x uint
return int
        public static int LogBase2(uint x)
        {
            int r = 0;
            while ((x >>= 1) != 0)
                r++;
            return r;
        }

Same methods

Base::LogBase2 ( ulong x ) : int

Usage Example

Example #1
0
        public static int GetOptimalBitsCount2(uint charsCount, out uint charsCountInBits,
                                               uint maxBitsCount = 64, bool base2BitsCount = false)
        {
            int result = 0;

            charsCountInBits = 0;
            int    n1            = Base.LogBase2(charsCount);
            ulong  uCharsCount   = (ulong)charsCount;
            double charsCountLog = Math.Log(2, charsCount);
            double maxRatio      = 0;

            for (int n = n1; n <= maxBitsCount; n++)
            {
                if (base2BitsCount && n % 8 != 0)
                {
                    continue;
                }

                uint   l1    = (uint)Math.Ceiling(n * charsCountLog);
                double ratio = (double)n / l1;
                if (ratio > maxRatio)
                {
                    maxRatio         = ratio;
                    result           = n;
                    charsCountInBits = l1;
                }
            }

            return(result);
        }