示例#1
0
        /// <summary>
        /// Умножение полиномов
        /// </summary>
        /// <param name="firstNumber"> Первый полином </param>
        /// <param name="secondNumber"> Второй полином </param>
        /// <returns> Возвращает умножение двух полиномов </returns>
        private static uint Multy(uint firstNumber, uint secondNumber)
        {
            int numberBinaryLengthFirstElement  = WorkWithBits.FindBinaryLength(firstNumber);
            int numberBinaryLengthSecondElement = WorkWithBits.FindBinaryLength(secondNumber);

            uint answer = 0;
            uint tmpConjunction;
            uint tmpXor;

            for (int i = 0; i < numberBinaryLengthFirstElement; i++)
            {
                for (int j = 0; j < numberBinaryLengthSecondElement; j++)
                {
                    tmpConjunction = (uint)(WorkWithBits.PrintBit(firstNumber, i) & WorkWithBits.PrintBit(secondNumber, j));
                    tmpXor         = (uint)WorkWithBits.PrintBit(answer, i + j) ^ tmpConjunction;
                    answer         = (uint)WorkWithBits.SetOrRemove(answer, tmpXor, i + j);
                }
            }
            return(answer);
        }
示例#2
0
        /// <summary>
        /// Выводит полином в подобающем пользовательском виде
        /// (степень x это нумерация бита справа налево)
        /// </summary>
        /// <param name="number"> Полином </param>
        /// <returns> Возвращает строку в виде привычного полинома </returns>
        private static string PrintGfElement(uint number)
        {
            int           numberBinaryLength = WorkWithBits.FindBinaryLength(number);
            StringBuilder answer             = new StringBuilder();

            for (int i = numberBinaryLength; i >= 0; i--)
            {
                if (WorkWithBits.PrintBit(number, i) == 1)
                {
                    if (i == 0)
                    {
                        answer.Append(1).Append(" + ");
                        break;
                    }
                    answer.Append("x^").Append(i).Append(" + ");
                }
            }
            answer.Remove(answer.Length - 3, 3);

            return(answer.ToString());
        }