• Десятично-двоичная арифметика

    В своих статьях мы все время говорим о десятично-двоичных вычислениях. При этом мы имеем в виду, что на входе и выходе вычислительного устройства числа представлены в привычном для нас десятичном виде. Например, как в популярном приложении Excel. Причем, в самом устройстве все вычисления выполняются в двоичном коде. Мы не будем рассматривать здесь десятичную арифметику, которая эмулируется в вычислительном устройстве BCD кодами, так как такая арифметика выполняет десятичные вычисления над десятичными числами. Остановимся на двоичной аппроксимации десятичных вычислений.

  • Катастрофическая отмена.

    Самая большая проблема, с которой мы сталкиваемся при решении десятичных задач в двоичной арифметике, это, так называемая, катастрофическая отмена или потеря значимости. Суть этого термина кроется в следующем. В результате некоторых вычислений происходит пропадание (аннулирование) старших разрядов операндов, в результате чего мы получаем результат далекий от  истинного. На выход возвращается число, которое сформировано только младшими разрядами аргументов.

  • Десятичное сравнение двоичных чисел

    Смысл любых математических вычислений – ответить на вопросы: равно ли  одно число другому и если не равно, то на сколько, или во сколько раз они отличаются друг от друга. Ответить на вопрос, какое из чисел больше или меньше не составляет труда, если есть ответ на вопрос, равны или нет сравниваемые числа. А ответить на вопрос о равенстве чисел не очень просто в рамках двоичной  компьютерной арифметики.

    Как известно, вся классическая математика развивалась из десятичного представления счета. Человек привык мыслить в десятичной системе счисления, хотя она мало чем отличается от любой другой системы. Современные компьютеры работают в основном  в двоичной системе счисления, т.к. технически реализовать двоичную арифметику гораздо проще. Тем не менее, в силу привычки, мы, как правило, интерпретируем двоичные результаты вычислений в десятичном счислении. Поэтому, проводя вычисления над десятичными числами на компьютере, мы, по факту, можем говорить о десятично-двоичной арифметике. А поскольку десятичная и двоичная системы счисления несоизмеримы, то на результаты вычислений, кроме ошибок вычисления, связанных с двоичным округлением,  будут оказывать ошибки преобразования чисел из десятичного вида в двоичный. 

  • Погрешность измерения и погрешность преобразования в десятично-двоичной арифметике

    Приводимые ниже размышления  полезны для понимания особенностей десятично-двоичных вычислений, т.е. двоичных  вычислений, выполняемых над десятичными числами.

    Числа, с которыми пользователь имеет дело, разделим на два класса — числа, полученные в результате вычислений, и числа, полученные в результате измерений.

    Числа, полученные в результате вычислений можно условно разделить на точные и приближенные.

    Точные числа, это множество натуральных чисел и числа, полученные в результате арифметических операций над натуральными числами. Причем, в результате арифметических операций над натуральными числами, могут быть получены как рациональные, так и иррациональные числа. И те и другие множества чисел могут представляться в виде десятичных  чисел с бесконечным количеством цифр в их дробной части. Например, рациональное число 1/3=0.333… имеет бесконечное число цифр, каждое из которых равно 3. Иррациональное десятичное число √2 =1.414… также состоит из бесконечного числа цифр. Оба этих множества объединяет то, что при желании мы можем точно вычислить  любую цифру в дробной части  этих чисел.

  • Что такое ulps и что такое ulp?

    Для решения проблемы сравнения двух близких чисел  был придуман термин ulp.  Аббревиатуру ulp впервые ввел известный ученый в области вычислительной математики  У.Кэхэн [1]. Обозначение ulp (Unit in the Last Place) является английским сокращением «единицы на последнем месте». С тех пор этот термин широко используется в компьютерной литературе, а также применяется в ряде языков программирования. Но, что интересно, единой интерпретации этого термина в настоящее время не существует. В [2] собраны и рассматриваются основные определения термина ulp.  Некоторые из них даны в работах  У.Кэхэна [1], Д.Харрисона [4] и Д.Голдберг [5]. Ниже мы приведем свою интерпретацию этого понятия, которое не противоречит определению Д.Голдберга и при этом, как нам кажется, оказывается простым и логичным. 

  • Что такое точность?

    Поговорим сегодня о точности.

    Интуитивно понятное слово точность в компьютерной арифметике имеет множество смысловых нюансов, что создает определенную путаницу и иногда приводит к ложным выводам. Кроме того, с понятием  точность связано много других точностных характеристик числа, которые надо себе четко представлять.

    Большая политехническая энциклопедия [1] термин точность трактует как «степень приближения истинного значения рассматриваемых параметров изделия, вещества, системы или процесса к истинному или теоретическому номинальному значению».

    Рассмотрим это определение относительно числовых объектов.

  • КОЕ-ЧТО ОБ ОТНОШЕНИЯХ ЧИСЕЛ ДЕСЯТИЧНЫХ И ЧИСЕЛ ДВОИЧНЫХ

                Двоичная + десятичная ≠ любовь

     

    Привычная для пользователя арифметика, это десятичная арифметика.

    Существуют также b-ичные арифметики, где b- база системы счисления отличная от 10, принимающая любое ненулевое значение [1].

    Для отображения чисел в разных масштабах используется запись чисел с плавающей точкой в виде произведения знаковой мантиссы и некоторой произвольной степени базы. Это, так называемая, экспоненциальная запись числа. Степень базы часто называют экспонентой.

    Если экспонента числа фиксирована и мантисса числа является целым числом, то такой формат называется форматом с фиксированной точкой.  Частным случаем формата с фиксированной точкой является целое число, в котором экспонента равна нулю. Такой формат является форматом целого числа.