7 битов недостаточно для двухзначной точности

Перевод статьи 7 Bits Are Not Enough for 2-Digit Accuracy | Автор: Rick Regan (спасибо!)

В 1960 году Bennett Goldberg и David W. Matula опубликовали документы, касающиеся числа с плавающей точкой для систем различных баз, показывая условия, при которых конвертация между ними возможна туда-обратно; то есть, когда преобразование в другой базе и обратно возвращает исходное число. Самостоятельно, оба автора вывели формулу, которая определяет количество значащих цифр, необходимых для двухстороннего преобразования.

В своей работе "27 битов недостаточно для 8-значной точности", Голдберг показывает формулу в контексте десятичной к двоичной плавающей точек преобразования. Он начинает с простого примера - 7-битная двоичная система с плавающей точкой - и показывает, что не имеется достаточной точности для редиректа всех 2-значных десятичных чисел с плавающей точкой. Я взял его пример и представил его в диаграммах, давая вам вид на высоком уровне, что определяет переходы туда и обратно. Я также расширил пример, чтобы показать, что то же самое относится и к двоичной в десятичной с плавающей запятой.

Известные цифра рассчитывает на оба конца преобразований в и из IEEE 754 с плавающей точкой продиктованы этими же принципами.

Семь вполне битов похожи, но это не так

С 7 бит, вы можете представлять 27 = 128 двоичных чисел. С двух цифр, можно представить 102 = 100 десятичных чисел. Очевидно, семь бит достаточно, чтобы представлять двузначные целые числа. Но числа с плавающей точкой должны быть проанализированы по-другому; расстояние ofdecimal и двоичные числа с плавающей точкой вступает в игру.

Перекрытие зазоры

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

В примере системы, есть 90 десятичных чисел (и 90 пробелов) между силами десяти, и 64 двоичных чисел (и 64 пробелов) между степенями двойки. Из-за чередования полномочий, они будут разделены на регионы у власти десять и власти двух границ. Эта таблица показывает, как это играет для диапазона 1,10000):

 
  Spacing Count
Region Decimal Binary Decimal Binary
[1,2) 0.1 0.015625 10 64
[2,4) 0.1 0.03125 20 64
[4,8) 0.1 0.0625 40 64
[8,10) 0.1 0.125 20 16
[10,16) 1 0.125 6 48
[16,32) 1 0.25 16 64
[32,64) 1 0.5 32 64
[64,100) 1 1 36 36
[100,128) 10 1 3 28
[128,256) 10 2 13 64
[256,512) 10 4 26 64
[512,1000) 10 8 48 61
[1000,1024) 100 8 1 3
[1024,2048) 100 16 10 64
[2048,4096) 100 32 20 64
[4096,8192) 100 64 41 64
[8192,10000) 100 128 18 15

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

20 десятичных чисел Карта 16 двоичных чисел

В области 8,10) есть 20 десятичных чисел, расположенных друг от друга 0,1: 8,0, 8,1, 8,2, ..., 9,8, 9,9. Кроме того, в этом регионе 16 двоичных чисел, расположенных друг от друга 0,125: 1000, 1000,001, 1000,01, ..., 1001,11, 1001,111. (Это легче сравнивать десятичные и двоичные числа, когда двоичные числа записываются в десятичной; удобно, все двоичные числа имеют точные десятичных представления, так что давайте писать их как 8,0, 8,125, 8,25, ..., 9,75, 9,875). Так как у нас есть больше десятичной количестве, чем двоичных чисел, некоторые десятичных чисел будет конвертировать (т.е. круглый) с тем же двоичного числа. Когда такой двоичное число преобразуется обратно в десятичной, только один из нескольких десятичных чисел может быть выбран - ближайший к нему. Те, не выбрал не возмещена.

Давайте посмотрим, как это выглядит:

В этом примере имеются четыре группы дубликатов, и в каждом случае каждая пара одинаково близко к двоичному числу он отображает на. (Это просто совпадение в этом примере, что все дубликаты карту к полпути в этом регионе; например, это не место для дубликатов в 8192,10000)., Которые я не показаны) Независимо от того, на полпути случаи округляются до десятичной назад, только четыре из восьми цифр будет возмещена, так что только 16 из 20 десятичных чисел будет туда-обратно.

Так сколько бит вам нужно?

Неофициально, "вам нужно больше одного бита, чем вы думаете, что нужно" по номерам туда-обратно. В этом случае, это 8 бит. (Я не буду утверждать, или вывести формулу в этой статье.) Вот как двузначные числа на карте до 8 бит:

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

Отзыв: Размер разрыва – это ключ

Относительный размер разрыв между десятичной и двоичных чисел с плавающей точкой определяет, будет туда-обратно через двоичной плавающей точкой ли десятичных чисел. Для области, содержащей только целые числа, размер зазора для обоих наборов чисел 1, а промежутки будут выстраиваться (целые конвертировать точно). Во всех других регионах, пробелы будут отличаться. Иногда конечные пробелов будут выстраиваться - для чисел, как 8,5 с точными двоичных представлений. Все другие номера не будут выстраиваться и, следовательно, должны быть округлены до ближайшего двоичного числа.

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

3 цифры не достаточно для 7-битной точности

Этот анализ работает одинаково хорошо как для спуско-подъемных преобразований, происходящих из бинарного стороны.

Для спускоподъемных 7-разрядных чисел, мы знаем, сразу, что двух цифр недостаточно: 27 = 128 > 102 = 100. Вы можете думать, три цифры достаточно, так как 128 <103 = 1000, но это не так.

В области 0.1,0.125), десятичные числа расположены 0,001 друг от друга, и двоичные числа расположены 0.0009765625 друг от друга. Эти пробелы очень близки, но десятичные числа расположены дальше друг от друга. Это создает основу для дублирующих отображений. Я осмотрел значения в этом регионе и нашел одну пару двоичных чисел, которые преобразуют в той же десятичного числа: 0,000110101 (0.103515625) и 0.0001101011 0.1044921875 и преобразования в 0,104. 0,103515625 ближе, так 0,1044921875 не возмещена.

Оказывается, что четырех цифр достаточно. В примере, 0,103515625 бы округлить 0.1035, и 0,1044921875 бы округлить 0.1045.

Круговорот от и к плавающей точке IEEE 754

В концепции, лежащие в этом примере объяснить известные цифры рассчитывает на оба конца преобразований в и из IEEE 754 с плавающей точкой:

  • число с плавающей запятой из 15 значащих цифр или менее будет туда-обратно через двойной точности с плавающей двоичной точкой.
  • число с плавающей запятой из 6 значащих цифр или менее будет туда-обратно через одинарной точности с плавающей двоичной точкой.
  • чисел двойной точности преобразуются в десятичных чисел с плавающей запятой на 17 значащих цифр или более, туда-обратно.
  • одинарной точности числа преобразуются в десятичные числа с плавающей запятой из 9 значащих цифр или более, туда-обратно.

Не нашли ответ на свой вопрос? Возможно, вы найдете решение проблемы на нашем канале в Youtube! Здесь мы собрали небольшие, но эффективные инструкции. Смотрите и подписывайтесь на наш youtube-канал!

Смотреть на Youtube

Руководства и обзоры

1 Что нужно восстановить?

Видео

MP4, AVI и HD видео хранятся на телефоне и / или по ошибке удаляются вместе с фотографиями и другими медиафайлами.

Контакты

Номера телефонов друзей и знакомых из приложения «Контакты Android», журналы вызовов; Восстановление SIM-карты.

Фото

Удалены файлы JPG / PNG из Галереи Android; фото, загруженные на мобильный, файлы повреждены после восстановления.

Смс и сообщения

Чаты WhatsApp и Facebook, текстовые сообщения в соцсетях, информация на сим-карте

2 Где пропали файлы?

На sd-карте

Фотографии и документы хранятся на SD-картах. Часто на них случайно удаляются файлы

На телефоне

Программы для восстановления не распознают внутреннее хранилище телефона как диск, но есть другие решения.

На USB флешке

Эти небольшие устройства хранения данных часто выходят из строя или на них появляются ошибки чтения.

На HDD или SSD

Несмотря на то, что настольные платформы становятся все менее популярными, проблема потери файлов всегда оставалась.