Есть ли более быстрый способ пакетной защиты файлов?

Почему мы не можем представить 9.2 в двоичной с плавающей запятой?

Числа с плавающей запятой (немного упрощают) систему позиционной нумерации с ограниченным числом цифр и подвижным основанием point.

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

Основными факторами 10 являются 5 и 2, поэтому в базе 10 мы можем представить любую долю вида a / (2b5c).

С другой стороны, единственным простым множителем 2 является 2, поэтому в базе 2 мы можем представлять только фракции вида a / (2b)

Почему компьютеры использовать это представление?

Поскольку это простой формат для работы, и он достаточно точен для большинства целей. В основном та же самая причина, по которой ученые используют «научную нотацию» и округляют их результаты до разумного количества цифр на каждом этапе.

Конечно, можно определить формат фракции, например (32) разрядный числитель и 32-разрядный знаменатель. Он мог бы представлять числа, которые не могли бы выполнять с плавающей точкой двойной точности IEEE, но в равной степени было бы много чисел, которые могут быть представлены в плавающей точке с двойной точностью, которые не могут быть представлены в таком формате фракции фиксированного размера.

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

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

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

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

1
задан Cindy Meister 16 January 2019 в 17:24
поделиться