Nano Hash - криптовалюты, майнинг, программирование

Гарантирует ли IEEE-754 float, double и quad точное представление -2, -1, -0, 0, 1, 2?

Все в заголовке: гарантирует ли IEEE-754 float, double и quad точное представление -2, -1, -0, 0, 1, 2?


  • Вы имеете в виду именно эти шесть значений или целые числа вообще? 17.11.2013
  • Прочитайте о формате и попробуйте создать эти значения на бумаге. 17.11.2013
  • Кстати, вы можете повеселиться здесь (хотя и не для "quad") 17.11.2013

Ответы:


1

Он гарантирует точное представление всех целых чисел до тех пор, пока количество значащих двоичных цифр не превысит диапазон мантиссы.

17.11.2013
  • Да, однако, целочисленного понятия -0 не существует. 17.11.2013
  • @AkiSuihkonen: Возможно, педантично, это верно для целочисленного представления с дополнением до двух, но не с дополнением до единицы, там отрицательный нуль действительно имеет представление. 17.11.2013
  • @AkiSuihkonen Не имеет значения. Это не то, что было задано, или то, что я ответил. Это отображение в противоположном направлении. 02.07.2018

  • 2

    Числа с плавающей запятой IEEE 754 можно использовать для хранения целых чисел определенного диапазона. Например:

    • binary32, реализованный в C/C++ как float, обеспечивает 24-битную точность и, следовательно, может представлять с полной точностью 16-битные целые числа, например. short int;
    • binary64, реализованный в C/C++ как double, обеспечивает 53-битную точность и может представлять ровно 32-битные целые числа, например. int;
    • нестандартная 80-битная точность Intel, реализованная как long double некоторыми компиляторами x86/x64, обеспечивает 64 значащих бита и может представлять 64-битные целые числа, например. long int (в системах LP64, например, Unix) или long long int (в системах LLP64, например, Windows);
    • binary128, реализованный как специфичные для компилятора типы, такие как __float128 (GCC) или _Quad (Intel C/C++), обеспечивает 113 битов в мантиссе и, следовательно, может представлять ровно 64-битные целые числа.

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

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

    17.11.2013

    3

    Простой способ получить ответ для любого десятичного числа, преобразовать абсолютное значение в двоичное (24 бита для числа с плавающей запятой, 53 бита для двойного числа, 113 бит для квадроцикла), затем обратно в десятичное число и посмотреть, получится ли то же значение обратно.

    Для целых чисел ответ очевиден, вы ничего не теряете, если только значение не слишком велико, чтобы уместиться в заданное количество бит.

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


    Поскольку вы балуетесь плавающими числами IEEE, сначала прочитайте страницу википедии, а затем, когда вы почувствуете, что Если вы готовы к большему, перейдите по первой внешней ссылке, "Что должен знать каждый специалист по информатике". Об арифметике с плавающей запятой".

    17.11.2013
  • 24, 53 и 113 пожалуйста! 17.11.2013
  • @MarkDickinson Спасибо, хороший улов! А для других причина в том, что существует неявный 1-бит, потому что это значение с плавающей запятой, а плавающую десятичную точку всегда можно сдвинуть так, что самый левый бит равен 1 (так называемое нормализованное значение ), и поскольку он всегда равен 1 (кроме 0), нет необходимости тратить на него ценный бит. 17.11.2013
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..