плавающие и целые числа ....? - PullRequest
5 голосов
/ 14 января 2010

зачем нам целые числа и плавающие в процессоре? Спасибо

Ответы [ 7 ]

2 голосов
/ 14 января 2010

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

Конечно, диапазон большинства реализаций числа fp больше, чем диапазон большинства целочисленных реализаций, но завтра я мог бы изобрести язык, в котором я допускаю 512-битные целые числа, но только 16-битные числа с плавающей точкой (1 знаковый бит, 3 экспонентных бита, 12 значащих и битных). Целые числа по-прежнему не закрыты при делении, а числа с плавающей точкой по-прежнему бесполезны для подсчета, потому что, хотя есть функция-преемница для чисел fp, ее нет для вещественных чисел, и нам нравится делать вид, что числа fp - близкая реализация действительные числа.

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

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

Абсолютная точность целых чисел - вот почему мы используем их для подсчета. Для всех практических целей достаточно точности существующих реализаций fp (теперь есть дикая претензия на разногласия!)

Привет

Mark

0 голосов
/ 18 июня 2010

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

0 голосов
/ 17 января 2010

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

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

0 голосов
/ 14 января 2010

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

Значения с плавающей точкой используются для аппроксимации действительных чисел. Вещественные числа - самая распространенная вещь в непрерывной математике Непрерывная математика используется для представления реального мира. (Отсюда и терминология «действительное число».)

Значения с плавающей точкой обычно не могут использоваться как целые числа. Вы не можете легко сосчитать от X до следующего числа, большего чем X. Они округляются, и нет никакой гарантии, что X + 1 даже отличается от числа X. Вообще говоря, два числа с плавающей запятой могут отличаться, если были созданы различными последовательностями операций, даже если выражения должны быть равны.

Числа с плавающей точкой непредсказуемы, как в реальной жизни. Целые числа упорядочены и эффективны, как компьютеры.

0 голосов
/ 14 января 2010

Значения с плавающей запятой имеют [гораздо] больший диапазон, чем целые числа. Также они могут представлять дробные значения. Эти функции, однако, предоставляются за счет потери точности.

Редактировать : (что я имею в виду под потеря точности )
Целочисленная арифметика всегда точна, так долго, что никто не предоставляет операнд, который вызывает переполнение или деление на ноль.
Это не относится к арифметике с плавающей запятой, при которой некоторые части значений могут быть потеряны при использовании таких значений в простых операциях. Причина этого заключается в том, что огромный диапазон значений, предлагаемых значениями с плавающей запятой, таков, что невозможно представить все смежные значения в пределах диапазона, учитывая [относительно] небольшое хранилище (обычно 8 или 16 байтов).

0 голосов
/ 14 января 2010

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

Часто целые числа - это все, что вам нужно.

0 голосов
/ 14 января 2010

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

C #, Java, C ++ и другие языки имеют разные типы для обработки целых чисел по сравнению с числами с плавающей точкой. Javascript делает противоположный выбор - специального целочисленного типа не существует, и, если я не ошибаюсь, все числа являются числами с плавающей точкой.


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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...