Типы данных в Access 2010
На прошлых уроках «Создание таблиц в Access 2010. Часть 1» и «Создание таблиц в Access 2010. Часть 2» при создании таблиц базы данных мы воспользовались тремя типами данных «Счетчик», «Текстовый» и «Дата/время». Теперь давайте рассмотрим, какие еще типы данных есть в Access 2010, для чего они применяются и какие объемы памяти необходимы для их хранения и обработки.
Смотрим в таблицу:
Тип данных | Описание | Объем занимаемой памяти |
Текстовый | Обычная текстовая строка | До 255 байт |
Поле MEMO | Многострочный текст | До 65 535 байт |
Числовой | Числа, как целые, так и вещественные | От 1 до 8 байт |
Дата/время | Дата и/или время | 8 байт |
Денежный | Денежные суммы | 8 байт |
Счетчик | Уникальное целое число, указывающее порядковый номер записи в таблице | 4 байта |
Логический | Логические значение (True/False) | 1 бит |
Поле объекта OLE | Объекты других приложений Windows (1 объект) | До 1 Гбайт |
Гиперссылка | Ссылка на файл (на данном ПК, в интернете или лок. Сети) | До 2048 байт |
Вложение | Объекты других приложений Windows (несколько объектов) | До 2 Гбайт |
Из всех перечисленных типов данных, чаще всего в Access Вы будете сталкиваться со следующими типами:
- Текстовый – применяется для хранения строк, длина у которых не превышает 255 символов (например ФИО сотрудника, название товара, адрес и т.д.)
- Поле MEMO – используется для хранения многострочного форматированного текста (также сохраняются все параметры шрифта). Применяется для хранения, например характеристики сотрудника, описание состава продукта.
- Числовой – используется для хранения различных типов чисел, как целых, так и вещественных. В таблице «Диапазоны чисел» приведено подробное описание задаваемых размерностей чисел в поле «Размер поля».
- Денежный – применяется для хранения денежных значений. По сути это тот же числовой тип, только отсутствует возможность задания размерности поля.
- Счетчик – используется для описания поля, которое заданно как первичный ключ. В поле этого типа для каждой новой записи генерируется уникальное число формата «Длинное целое».
- Дата/время – применяется для хранения значений календарных дат и времени. С помощью «Формат поля» можно задать вид отображения дат и времени. По умолчанию используется «Краткий формат даты».
- Логический – используется для хранения всего двух логических значений «Истина/Ложь». С помощью «Формат поля» можно задать, в каком виде будут отображаться данные в этом поле. По умолчанию «Истина/Ложь», остальные «Да/Нет», «Вкл/Выкл».
- Вложение – этот тип данных появился начиная с версии Access 2007. Поле с типом «Вложение» позволяет добавлять файлы (документы, рисунки и т.д.). Размер одного добавляемого файла не должен превышать 256мб, а суммарно не более 2гб на одну строку. Для того, чтобы вложить файл(ы), достаточно щелкнуть в записи, по полю типа «Вложение», два раза, после чего откроется окно добавления файлов.
Таблица «Диапазоны чисел».
Значение | Содержимое | Диапазон | Объем |
Байт | Целые числа | От 0 до 255 | 1 байт |
Целое | Целые числа | -32 768 до 32 767 | 2 байта |
Длинное целое | Целые числа | –2 147 483 648 до 2 147 483 647 | 4 байта |
Одинарное с плавающей точкой | Вещественные числа с точностью до 7 знаков после запятой | –3.28–1 | 12 байт |
При проектировании БД и создании таблиц, необходимо тщательно продумать тип каждого поля т.к. изменение типа поля в таблице, которая уже содержит данные, чревато частичной или полной потерей данных.
Иллюстрированный самоучитель по Microsoft Access 2003 › Настройка таблиц [страница — 113] | Самоучители по офисным пакетам
Настройка таблиц
Выбирая размер поля для числового типа данных, необходимо учесть ряд обстоятельств и ответить на следующие вопросы:
- Какое может потребоваться максимальное значение?
- Будет число целым или дробным?
- Существенны ли ошибки при округлении?
Для хранения целых чисел лучше всего подходят поля Байт, Целое и Длинное целое. Выберите наименьший тип для хранения данных, поскольку такое поле быстрее всего обрабатывается.
Дробные значения хранятся в полях Одинарное с плавающей точкой, Двойное с плавающей точной или Действительное. И опять же, свойство следует выбирать с учетом объема данных, но не следует забывать об округлении. Поля Одинарное с плавающей точкой и Двойное с плавающей точкой могут вернуть значение, несколько отличающееся от того, что вводилось ранее, особенно если значение было многоразрядным. Тип данных
Для поля КоличествоПосадок было указано свойство Условие на значение. Его можно озвучить так: «Введенное число не должно быть меньше или равным 5». Если условие соблюдается, Access позволит ввести число, в противном случае в поле Сообщение об ошибке появится предупреждение. Проверим на практике, так ли это.
- Сохраните таблицу Насаждения. На экране появится несколько настораживающее сообщение, которое вы видите на рис. 11.7. Дело в том, что Access желает знать, следует ли использовать новое свойство Условие на значение для существующих строк в таблице. Щелкните на кнопке Нет.
- Переключитесь в режим таблицы. Обратите внимание на то, что поле Количество посадок уже содержит значение 1 в строке новой записи, как и указано в свойстве Значение по умолчанию . Если бы запись была определена ранее, то значение 1 не было бы введено, поскольку свойство Значение по умолчанию добавлено уже после ввода записи; это свойство применяется только к новым записям.
- Введите в новую запись какие-либо данные, но обязательно задайте количество посаженных растений, равным 52; при попытке покинуть поле появится сообщение об ошибке, приведенное на рис. 11.8. До тех пор, пока указанное значение не будет изменено, вы не сможете перейти в другое поле или сохранить запись.
- Щелкните на кнопке ОК и измените значение поля Количество посадок с 52 на 48. Теперь с помощью кнопки Таb можно перейти из этого поля к любому другому и сохранить запись.
Рис. 11.7. Предупреждение о возможном нарушении целостности данных
Рис. 11.8. Сигнал о попытке нарушить свойство Условие на значение
Существует возможность создавать самые разнообразные условия на значение, нередко с достаточно сложным синтаксисом. К счастью, зубрить синтаксис нет необходимости – в табл. 11.2 приведены примеры основных условий на значение.
Код репликации – это кодированные значения, предназначенные главным образом для использования в базах данных, одновременно хранимых на нескольких компьютерах. Это свойство едва ли вам когда-нибудь понадобится.
Таблица 11.2. Основные условия на значение.
Условие | Объяснение |
---|---|
<=50 | Меньше или равно 50 |
<>5 | Не равно 5 – разрешено любое значение, кроме 5 |
Is Not Full | Поле нельзя оставлять незаполненным, требуется обязательно ввести какое-либо значение. Аналогично указанию для свойства Обязательное поле значения да |
<10 or IB Null | Меньше 10, в противном случае – пустое поле |
Like «B« | Поле должно начинаться с буквы в. Звездочка представляет собой групповой символ, совпадающий с любым количеством символов |
Like «?????X« | Поле должно содержать 6 символов и заканчиваться буквой х. Знак вопроса – это также групповой символ, совпадающий лишь с одним символом |
Between #1/1/2004# And #12/ 31/2008/t | Любая дата между 1 января 2004 года и 31 декабря 20-08 года. Обратите внимание: по наличию символов # Access узнает о том, что указанные числа являются датами |
Специальные размеры полей с числовым типом данных
⇐ ПредыдущаяСтр 10 из 18Следующая ⇒Давайте обратимся к свойству «Размер поля» и с его помощью рассмотрим возможные варианты для полей с числовым типом данных.
Рис. 4.9. Окно установления размера поля
Отметьте, что первые три установки – Байт, Целое и Длинное целое – позволяют вводить только целые числа (без дробной части). Размер поля «Двойное с плавающей точкой» позволяет вводить до пятнадцати десятичных знаков.
Таблица 4.3
Размеры полей числового типа
Параметр, определяющий размер поля | Диапазон значений | Десятичные знаки |
Байт (Byte) | От 0 до 255 | Нет |
Целое (Integer) | От -32 768 до 32 767 | Нет |
Длинное целое (Long Integer) | От -2 147 483 648 до 2 147 483 647 | Нет |
Двойное с плавающей точкой (Double) | От -3,4* до 3,4* | |
Действительное (Single) | От -1.797* до 1.797* |
Обратите внимание, при изменении полей типа Number также возможна потеря информации. Если в поле присутствуют числа с дробной частью, а вы выбираете установку, позволяющую хранить только целые числа, дробная часть будет утеряна. Access автоматически округлит эти числа до целых.
Поиск и отбор данных
В Access любые данные могут использоваться для поиска связанной с ними информации. В Access установлены мощные средства, которые могут помочь вам в поиске нужной вам информации. Вы можете найти данные, даже если знаете о них очень мало. Одним из таких средств является команда Find (Найти).
Вы используете команду Find, чтобы установить местоположение в базе данных определённой информации. Преимуществом этой команды является то, что для поиска требуемой записи достаточно даже минимальных сведений. Эта команда обладает двумя важными достоинствами: вы можете найти информацию, помня лишь одно слово, которое вводили, и то, что информация (слова) могут быть не уникальными. Поиск фрагментов данных в любой таблице очень прост – достаточно выбрать команду в меню Правка — Найти, установить опции и нажать кнопку «Найти» и запись будет найдена.
Рис. 4.10. Окно свойств поиска
В поле ввода «Образец» вы вводите всё, что хотите отыскать. Вы можете использовать это поле даже в том случае, когда не знаете точно, что ищете. Ниже поля «Образец» находятся поля «Поиск в», «Совпадение», «Просмотр». В поле «Просмотр» вы указываете направление, в котором Access будет искать ваши данные: всё, вверх или вниз. Раскрывающийся список «Совпадение» содержит три установки, которые определяют тип сравнения данных с образцом, введённым для поиска. Нажмите мышью на кнопку раскрытия списка и выберите значение, которое вам требуется.
Таблица 4.4
Перечень опций и их назначение
Опция | Назначение |
С любой частью поля | Осуществляет поиск по всему полю. Если значение, которое вы ищете, окажется где угодно в поле списка, то поиск завершается успешно |
Поля целиком | Образец поиска должен совпадать с полным значением поля. Если в данном поле есть какая-то информация, то Access считает, то образец не найден |
С начала поля | Поиск завершается успешно только в том случае, если образец поиска находится в начале данного поля |
Кроме поиска данных, с помощью команды Find вы можете заменить то, что нашли. Однако если вы допустили глобальную ошибку и вам нужно исправить сотни или тысячи записей за один раз, то избегайте команды «Замена». Аналогично команде «Поиск» команду «Замена» следует использовать при работе с немногочисленными записями.
Это окно похоже на окно диалога «Найти», но немного проще. Вам всего лишь надо ввести в поле «Образец» то, что вы хотите заменить, а в поле «Заменить на» то, на что вы хотите заменить. Как и у предыдущего диалога, здесь имеется раскрывающийся список «Просмотр», в котором вы почти всегда будете устанавливать «Всё».
Рис. 4.11. Окно свойств замены
Ниже приведено описание флажков в окне диалога:
· «С учётом регистра символов». Если в поле ввода «Найти» введено «Пеликан» и установлен этот флажок, то Access найдет только «Пеликан», а «пеликан» не будет найден.
· «С учётом формата полей». Оставьте этот флажок неустановленным, если хотите осуществить поиск по всей таблице.
Обратите внимание на кнопки «Заменить» и «Заменить всё». Если вы выберите «Заменить всё», то Access заменит все вхождения, соответствующие образцу поиска, заданному в поле ввода «Найти». Если вы выбрали «Заменить», вы сможете изменять образец поиска после каждого вхождения образца в таблице.
Также вы можете сортировать поля различных типов данных по возрастанию или убыванию значений. Вы также можете сортировать два поля в одной таблице одновременно.
Для баз данных «Упорядочение по возрастанию» означает, что поля отсортированного текста начинаются с «А» и заканчиваются «Я», отсортированные числа идут от 0 до бесконечности, а отсортированные поля типа Дата/ Время располагаются по увеличению даты от даты до н.э. к современной. Аналогично, «Упорядочение по убыванию» означает, что данные сортируются от «Я» к «А» и т.д.
Вы можете сортировать данные в любом поле – это значит, что порядок записей устанавливается в соответствии со значениями величин, хранящихся в этом поле. После того, как вы определили, какое поле будете сортировать, установите курсор на любую запись этого поля. Выберите Записи→Сортировка→По возрастанию (По убыванию).
Бывают ситуации, когда вам нужно отсортировать два поля одновременно.
1. Для этого вам нужно переместить поле, которое вы хотите отсортировать первым, левее поля, которое вы хотите отсортировать вторым. Чтобы сделать это, вам нужно снять фиксацию со всех полей. Выберите Формат→Освободить все столбцы.
2. Нажмите мышью на область маркировки поля «Номера» и переместите поле левее поля «Телефонная книжка».
Рис. 4.12. Окно ввода результатов
3. Поле «Номера» всё ещё должно быть выделенным. Вам нужно, чтобы оба поля были выделены одновременно, поэтому, держа нажатой клавишу <SHIFT>, нажмите мышью на область выбора поля «Телефонная книжка». В результате оба поля будут выделены.
4. Нажмите кнопку на панели инструментов «Сортировка по возрастанию».
5. Access отсортировал поля так, что теперь фамилии ваших друзей в телефонной книжке будут расположены в алфавитном порядке.
6. Закрывая таблицу, вы можете выбрать «Да», и тогда Access сохранит ваши изменения, или же выбрать «Нет», и тогда Access вернёт вашу таблицу в первоначальное состояние.
Рис. 4.13. Окно исходных данных
Сортировка в режиме таблицы
Для того чтобы отсортировать данные в режиме таблицы вам необходимо выполнить следующие действия:
1. Выделить список или таблицу, которые требуется отсортировать.
2. Выбрать команду «Сортировка» в меню «Таблица».
3. Выбрать нужные параметры сортировки.
Также вы можете сортировать данные отдельного столбца таблицы.
Порядок действий, которые вы должны будете сделать:
1. Выделить столбец или ячейки, которые требуется отсортировать.
2. Выбрать команду «Сортировка» в меню «Таблица».
3. Выбрать нужные параметры сортировки.
4. Нажать кнопку «Параметры».
5. Установить флажок «Только столбцы».
Если, к примеру, столбец содержит имена и фамилии, сортировка может производиться как по именам, так и по фамилиям.
Чтобы выполнить сортировку столбца по нескольким словам или полю вы должны:
1. Выделить столбец, который требуется отсортировать.
2. Выбрать команду «Сортировка» в меню «Таблица».
3. Выбрать нужный параметр в области «Список».
4. Нажать кнопку «Параметры».
5. В области «Разделитель полей» выбрать знак, который должен разделять слова или поля, по которым будет производиться сортировка, а затем нажмите кнопку OK.
6. В поле «Сначала» выбрать столбец, по данным которого требуется выполнить сортировку, а затем выбрать в поле «По» слово или поле, по которым будет производиться сортировка.
7. В первом из полей «Затем» выбрать столбец, содержащий необходимые данные, а затем в поле «По» указать слово или поле, по которому будет производиться сортировка.
8. При необходимости задать дополнительный столбец сортировки, повторив шаг 7 во втором поле «Затем».
9. Нажать кнопку «OK».
Индексирование. Ключи
Первичный ключ – это информация, которая однозначно идентифицирует запись. Каждой записи в таблице ставится в соответствие идентификационный номер, это и делает Access, когда предлагает вам проставить первичный ключ. Это означает, что каждый раз при создании новой записи значение счётчика увеличивается на 1. Этот номер и является первичным ключом для каждой новой записи.
Для установки первичного ключа вам необходимо всего лишь выбрать, какое из полей вы хотите сделать ключевым, и нажать на изображение маленького ключика на рабочем столе. В области маркировки поля, которое будет использоваться в качестве первичного ключа, появится маленькая пиктограмма с изображением ключа.
После того, как вы поставили первичные ключи, вы можете начать ввод данных.
Читайте также:
Число десятичных знаков для поля в таблице Access?
← →kyn66 © (2005-05-12 10:14) [0]
Уважаемые мастера, при добавлении нового столбца в таблицу Access и назначая ему тип Одинарное с плавающей точкой (Real), по умолчанию Значение десятичных знаков устанавливается в Авто. Каким образом можно изменить это значение у существующего столбца, к примеру на 1, 2 или 3 при помощи SQL запроса?
← →
msguns © (2005-05-12 10:27) [1]
На клиенте это делается с помощью свойства TField DisplayFormat, а зачем «резать» не сервере ?
← →
Anatoly Podgoretsky © (2005-05-12 10:43) [2]
с плавающей точкой, то есть количество знаков после запятой у поля задать нельзя! Иначе какое оно тогда с плавающей?
Решение в преоразовании из плавающей в фиксированую или плюнуть на это, как предлагает msguns
← →
kyn66 © (2005-05-12 11:28) [3]
DisplayFormat — это представление. А у меня в таблице поставлено вместо авто — 1 знак. Теперь я в базу не могу внести значение, к примеру 1.25. Это все потому, что недавно начал работать с Access, а теперь, когда у людей появляются требования ввести числа с двумя знаками после запятой, нужно исправлять ситуацию в рабочей базе.
← →
msguns © (2005-05-12 11:37) [4]
ALTER TABLE + F1 (jetsql40.chm)
← →
sniknik © (2005-05-12 11:53) [5]
ALTER TABLE здесь не пройдет, это определяется не типом данных а элементом управления в самом access-е (во всяком случае так оно по справке получается)
изменять вне аксесса можно через ADOX
см. хелп по DecimalPlaces
«Свойство «Число десятичных знаков» (DecimalPlaces)»
и
«Задание свойств объектов ADO (ActiveX Data Objects)» свойство обьекта поле
Field — Caption, ColumnHidden, ColumnOrder, ColumnWidth, DecimalPlaces, Description, Format, InputMask
но имхо это бессмысленно, нафига оно нам? изменять из дельфей свойства обьектов аксесса… смысл, если мы используем только данные? а в дельфях у компонент за тоже самое отвечают другие свойства, в самих этих компонентах.
← →
kyn66 © (2005-05-12 16:31) [6]
> sniknik
>но имхо это бессмысленно, нафига оно нам? изменять из дельфей свойства обьектов аксесса… смысл, если мы используем только данные? а в дельфях у компонент за тоже самое отвечают другие свойства, в самих этих компонентах.
А для того, что база находится в работе на районах и эта вестч понадобилась. Я же не буду всем объяснять, шоб зашли в Access нажали туда и туда…..
Что касается справки по ALTER TABLE, то нифига там толкового не написано. Ужень ужато без примеров и вааще.
← →
sniknik © (2005-05-12 22:52) [7]
> А для того, что база находится в работе на районах и эта вестч понадобилась. Я же не буду всем объяснять, шоб зашли в Access нажали
> туда и туда…..
заходить никуда не надо, это влияет только на способ отображения, скажи каким образом тебя касается то, как будет показываться это поле в аксессе если у тебя программа на дельфи? а на данные это не влияет.
справка (куда тебя уже посылали)
Свойство Число десятичных знаков (DecimalPlaces) определяет число десятичных знаков, используемое при отображении чисел.
> Что касается справки по ALTER TABLE, то нифига там толкового не написано.
там очень толково все написано, про то как менять данные/базу/типы полей… а то что там нет того чего ты хочеш… ну дак, устроено оно так. смирись.
я же вроде написал где можно это найти, илы ты учился на курсах быстрого чтения, и теперь читаеш через слово?
← →
Anatoly Podgoretsky © (2005-05-13 01:10) [8]
sniknik © (12.05.05 22:52) [7]
Begin/End
← →
kyn66 © (2005-05-13 11:34) [9]
>sniknik
Ты прав, действительно это только для Access, и число 2.23 нормально вводится. Я по этому поводу боялся. Ща попробывал — все окейно 😎
> я же вроде написал где можно это найти, илы ты учился на курсах быстрого чтения, и теперь читаеш через слово?
Можно повторить, где, могет девствительно пропустил?
← →
sniknik © (2005-05-13 11:45) [10]
sniknik © (12.05.05 11:53) [5]
> см. хелп по DecimalPlaces
> «Свойство «Число десятичных знаков» (DecimalPlaces)»
> и
> «Задание свойств объектов ADO (ActiveX Data Objects)» свойство > обьекта поле
> Field — Caption, ColumnHidden, ColumnOrder, ColumnWidth, DecimalPlaces, Description, Format, InputMask
если не понял в кавычках это заголовки из того самого хелпа.
← →
kyn66 © (2005-05-13 12:29) [11]
> sniknik
ОК! 😎
Форма с плавающей точкой и арифметические операции в ней
Форма представления чисел с плавающей точкой предназначена для работы с вещественнымичислами, имеющими дробную часть. Так, например, число 5 — целое, а числа 5.1 и -5.0 — вещественные.
Для удобства отображения чисел, принимающих значения из достаточно широкого диапазона (т.е. как очень маленьких, так и очень больших), используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 можно в этой форме представить так:
1.25*100= 0.125*101= 0.0125*102= 12.5*10–1= 125.0*10–2= 1250.0*10–3= … .
Любое число Nв системе счисления с основаниемqможно записать в виде
,
где Mназываетсямантиссойчисла, аp—порядком. Такой способ записи чисел называется представлением сплавающей точкой.
Если «плавающая» точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, т.е. максимальная точность представления числа в машине. Из этого следует, что мантисса должна быть правильной дробью, первая цифра которой отлична от нуля: 0.1|М|< 1.
Такое, наиболее выгодное для компьютера, представление вещественных чисел называется нормализованным.
Мантиссу и порядок q-ичного числа принято записывать в системе с основаниемq, а само основание — в десятичной системе.
Примеры нормализованного представления:
Десятичная система Двоичная система
753.15 = 0.75315*103; -101.01 = -0.10101*211(порядок 11(2)= 3(10))
-0.000034 = -0.34*10-4; -0.000011 = 0.11*2-100(порядок -100(2)= -4(10))
Диапазон значащих чисел в системе счисления с основанием q при наличии m разрядов у мантиссыsразрядов у порядка (без учета знаковых разрядов порядка и мантиссы) определяется неравенствами:
.
Так, при q=2, m=10,s=6диапазон чисел простирается от 10-19до 1019.
Вещественные числа в ПК различных типов записываются по-разному. При этом компьютер обычно предоставляет программисту возможность выбора из нескольких числовых форматов наиболее подходящего для конкретной задачи — с использованием четырех, шести, восьми или десяти байтов.
В качестве примера в табл. 6 приведены характеристики форматов вещественных чисел, используемых IBM-совместимыми ПК.
Таблица 5. Форматы представления вещественных чисел
Форматы вещественных чисел | Размер в байтах | Примерный диапазон абсолютных значений | Количество значащих десятичных цифр |
Одинарный | 4 | 10–45 … 1038 | 7 или 8 |
Вещественный | 6 | 10–39 … 1038 | 11 или 12 |
Двойной | 8 | 10–324 … 10308 | 15 или 16 |
Расширенный | 10 | 10–4932 … 104932 | 19 или 20 |
Из таблицы видно, что форма представления чисел с плавающей точкой позволяет записывать числа с высокой точностью и из весьма широкого диапазона.
При хранении числа с плавающей точкой отводятся разряды для мантиссы, порядка, знака числа и знака порядка. Например, число –0.125(10)= –0.001(2)= –0.1*2–10(отрицательный порядок записан в дополнительном коде) представляется так:
Очевидно, что чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.
Выполнение арифметических операций над вещественными числами отличается от аналогичных операций над целыми числами.
К началу выполнения арифметического действия операнды операции помещаются в соответствующие регистры АЛУ.
При сложении и вычитании сначала производится подготовительная операция, называемая выравниванием порядков.
В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков операндов. После каждого сдвига порядок увеличивается на единицу.
В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются или вычитаются.
В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата влево. После каждого сдвига влево порядок результата уменьшается на единицу.
Пример 8.Сложить двоичные нормализованные числа 0.10111•2–1и 0.11011*210. Разность порядков слагаемых здесь равна трем, поэтому перед сложением мантисса первого числа сдвигается на три разряда вправо:
Пример 9.Выполнить вычитание двоичных нормализованных чисел 0.10101*210и 0.11101*21. Разность порядков уменьшаемого и вычитаемого здесь равна единице, поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:
Результат получился не нормализованным, поэтому его мантисса сдвигается влево на два разряда с соответствующим уменьшением порядка на две единицы: 0.1101*20.
При умножении двух нормализованных чисел их порядки складываются, а мантиссы перемножаются.
Пример 10.Выполнить умножение двоичных нормализованных чисел:
(0.11101*2101)*(0.1001*211) = (0.11101*0.1001)* 2(101+11)= 0.100000101*21000.
При делении двух нормализованных чисел из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случае необходимости полученный результат нормализуется.
Пример 11.Выполнить деление двоичных нормализованных чисел:
0.1111*2100: 0.101*211= (0.1111 : 0.101)*2(100–11)= 1.1*21= 0.11•210.
Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства.
Арифметика с плавающей точкой — Floating-point arithmetic
Компьютерный формат для представления действительных чисел
Эта статья посвящена способу представления числа. Об альбоме см. Плавающая точка . Первый электромеханический программируемый компьютер, Z3 , включал арифметику с плавающей запятой (точная копия выставлена в Немецком музее в Мюнхене ).В вычислении , арифметика с плавающей точкой ( FP ) является арифметической используя формульное представление действительных чисел в качестве приближения для поддержки компромисса между диапазоном и точностью. {\ text {exponent}}}.}
Термин с плавающей точкой относится к тому факту, что точка счисления в числе ( десятичная точка или, чаще всего в компьютерах, двоичная точка ) может «плавать»; то есть его можно разместить в любом месте относительно значащих цифр номера. Эта позиция обозначается как экспонента, и поэтому представление с плавающей запятой можно рассматривать как своего рода научную нотацию .
Систему с плавающей запятой можно использовать для представления с фиксированным числом цифр чисел разного порядка : например, расстояние между галактиками или диаметр атомного ядра можно выразить с помощью одной и той же единицы длины. Результатом этого динамического диапазона является то, что числа, которые могут быть представлены, расположены неравномерно; разница между двумя последовательными представимыми числами зависит от выбранного масштаба.
Числа с плавающей запятой одинарной точности в числовой строке : зеленые линии отмечают представляемые значения. Расширенная версия выше, показывающая оба знака представимых значенийНа протяжении многих лет в компьютерах использовались различные представления с плавающей запятой. В 1985 году был установлен стандарт IEEE 754 для арифметики с плавающей запятой, а с 1990-х годов наиболее часто встречаются представления, определенные IEEE.
Скорость операций с плавающей запятой, обычно измеряемая в количестве FLOPS , является важной характеристикой компьютерной системы , особенно для приложений, требующих интенсивных математических вычислений.
Блок с плавающей запятой (FPU, в просторечии математический сопроцессор ) — это часть компьютерной системы, специально разработанная для выполнения операций с числами с плавающей запятой.
Обзор
Числа с плавающей запятой
Числовое представление определяет способ кодирования числа, обычно в виде строки цифр.
Есть несколько механизмов, с помощью которых строки цифр могут представлять числа. В обычной математической нотации строка цифр может быть любой длины, а расположение точки счисления указывается путем помещения в нее явного символа «точки» (точки или запятой). Если точка счисления не указана, то строка неявно представляет собой целое число, а неустановленная точка счисления будет находиться за правым концом строки, рядом с наименее значащей цифрой. В системах с фиксированной точкой позиция в строке указывается для точки счисления. Таким образом, схема с фиксированной точкой может заключаться в использовании строки из 8 десятичных цифр с десятичной точкой посередине, при этом «00012345» будет представлять 0001,2345.
В научном представлении данное число масштабируется в степени 10 , так что оно находится в определенном диапазоне — обычно между 1 и 10, причем точка счисления появляется сразу после первой цифры. В таком случае масштабный коэффициент в виде степени десяти указывается отдельно в конце числа. Например, орбитальный период Jupiter «с луны Ио является 152 853,5047 секунд, значение, которое будет представлено в стандартной форме научной записи как 1,528535047 × 10 5 секунд.
Представление с плавающей запятой аналогично понятию научной записи. Логически число с плавающей запятой состоит из:
- Знаковая (то есть положительная или отрицательная) строка цифр заданной длины с заданным основанием (или основанием ). Эта цифра строка называется мантисса , мантиссы , или коэффициент . Длина мантиссы определяет точность, с которой могут быть представлены числа. Положение точки системы счисления всегда предполагается где-то в пределах мантиссы — часто сразу после или непосредственно перед самой значащей цифрой, или справа от самой правой (наименее значащей) цифры. В этой статье обычно следует соглашение, согласно которому точка счисления устанавливается сразу после самой значащей (самой левой) цифры.
- Целочисленный показатель степени со знаком (также называемый характеристикой или масштабом ), который изменяет величину числа.
Чтобы получить значение числа с плавающей запятой, мантисса умножается на основание, возведенное в степень экспоненты , что эквивалентно смещению точки системы счисления из предполагаемого положения на количество разрядов, равное значению показателя степени — справа, если показатель положительный, или слева, если показатель отрицательный. {e},}
где s — значение (игнорируя любую подразумеваемую десятичную точку), p — точность (количество цифр в значении), b — основание (в нашем примере это число десять ), а e — показатель степени.
Исторически сложилось так, что для представления чисел с плавающей запятой использовалось несколько оснований счисления, из которых наиболее распространенным было основание два ( двоичное ), за ним следовало основание десять ( десятичное число с плавающей запятой ) и другие менее распространенные варианты, такие как основание шестнадцать ( шестнадцатеричное число с плавающей запятой ), основание восемь (восьмеричное число с плавающей запятой), основание четыре (четвертичное число с плавающей запятой), основание три ( сбалансированное троичное число с плавающей запятой ) и даже основание 256 и основание 65 536 .
Число с плавающей запятой является рациональным числом , потому что оно может быть представлено как одно целое число, разделенное на другое; например 1,45 × 10 3 — это (145/100) × 1000 или 145 000/100 . База определяет дроби, которые могут быть представлены; например, 1/5 не может быть представлена точно как число с плавающей запятой с использованием двоичной основы, но 1/5 может быть точно представлена с использованием десятичной основы ( 0,2 или 2 × 10 −1 ). Однако 1/3 не может быть точно представлена ни двоичным (0,010101 …), ни десятичным (0,333 …), но в базе 3 это тривиально (0,1 или 1 × 3 −1 ). Случаи, когда происходят бесконечные расширения, зависят от основания и его простых множителей .
Способ, которым мантисса (включая ее знак) и экспонента хранится в компьютере, зависит от реализации. Общие форматы IEEE подробно описаны позже и в другом месте, но в качестве примера в двоичном представлении с плавающей запятой одинарной точности (32-битное) , и, таким образом, значение представляет собой строку из 24 битов . Например, первые 33 бита числа π : п знак равно 24 {\ displaystyle p = 24}
- 11001001 00001111 1101101 0 _ 10100010 0. {\ displaystyle 11001001 \ 00001111 \ 1101101 {\ underline {0}} \ 10100010 \ 0.}
В этом двоичном расширении обозначим позиции от 0 (крайний левый бит или самый старший бит) до 32 (крайний правый бит). 24-битное значение остановится на позиции 23, показанной как подчеркнутый бит. 0 выше. Следующий бит в позиции 24 называется битом округления или битом округления . Он используется для округления 33-битного приближения до ближайшего 24-битного числа (существуют особые правила для половинных значений , которых здесь нет). Этот бит, который 1 в этом примере добавляется к целому числу, образованному крайними левыми 24 битами, что дает:
- 11001001 00001111 1101101 1 _ . {\ displaystyle 11001001 \ 00001111 \ 1101101 {\ underline {1}}.}
Когда это сохраняется в памяти с использованием кодировки IEEE 754, это становится величиной s . Предполагается, что мантисса имеет двоичную точку справа от крайнего левого бита. {1} \\\ приблизительно {} & 1.5707964 \ times 2 \ \\ приблизительно {} & 3.1415928 \ end {выровнено}}}
где p — точность ( 24 в этом примере), n — позиция бита мантиссы слева (начиная с 0 и заканчивая на 23 здесь), а e — показатель степени ( 1 в этом примере).
Может потребоваться, чтобы старший разряд мантиссы ненулевого числа был ненулевым (за исключением случаев, когда соответствующий показатель был бы меньше минимального). Этот процесс называется нормализацией . Для двоичных форматов (в которых используются только цифры 0 и 1 ), эта ненулевая цифра обязательно 1 . Следовательно, его не нужно представлять в памяти; позволяя формату иметь еще один бит точности. Это правило называется по-разному соглашением о ведущих битах , неявным соглашением о битах, соглашением о скрытых битах или предполагаемым соглашением о битах .
Альтернативы числам с плавающей запятой
Представление с плавающей запятой на сегодняшний день является наиболее распространенным способом представления в компьютерах приближения к действительным числам. Однако есть альтернативы:
- В представлении с фиксированной точкой используются целочисленные аппаратные операции, управляемые программной реализацией определенного соглашения о расположении двоичной или десятичной точки, например, 6 битов или цифр справа. Оборудование для управления этими представлениями менее затратно, чем с плавающей запятой, и его также можно использовать для выполнения обычных целочисленных операций. Двоичная фиксированная точка обычно используется в специализированных приложениях на встроенных процессорах, которые могут выполнять только целочисленную арифметику, но десятичная фиксированная точка широко применяется в коммерческих приложениях.
- Логарифмические системы счисления (LNS) представляют действительное число логарифмом его абсолютного значения и знаковым битом. Распределение значений аналогично распределению значений с плавающей запятой, но кривая значения для представления ( т. Е. График функции логарифмирования) гладкая (за исключением 0). В отличие от арифметики с плавающей запятой, в логарифмической системе счисления умножение, деление и возведение в степень легко реализовать, но сложение и вычитание сложны. ( Симметричная ) арифметика индекса уровня (LI и SLI) Чарльза Кленшоу, Фрэнка Олвера и Питера Тернера — это схема, основанная на представлении обобщенного логарифма .
- Коническое представление с плавающей запятой , которое, похоже, не используется на практике.
- Там, где требуется более высокая точность, может быть реализована арифметика с плавающей запятой (обычно в программном обеспечении) с величинами переменной длины (а иногда и показателями), размер которых зависит от реальной потребности и в зависимости от того, как выполняются вычисления. Это называется арифметикой с плавающей запятой произвольной точности .
- Расширения с плавающей запятой — еще один способ получить большую точность, используя оборудование с плавающей запятой: число представляется как неоцененная сумма нескольких чисел с плавающей запятой. Пример является двойным двойным арифметическим , иногда используется для типа C
long double
. - Некоторые простые рациональные числа ( например , 1/3 и 1/10) не могут быть представлены точно в двоичном формате с плавающей запятой, независимо от точности. Использование другой системы счисления позволяет представить некоторые из них ( например , 1/10 в десятичной системе счисления с плавающей запятой), но возможности остаются ограниченными. Программные пакеты, выполняющие рациональную арифметику, представляют числа в виде дробей с целым числителем и знаменателем и, следовательно, могут точно представлять любое рациональное число. Такие пакеты, как правило, должны использовать арифметику » bignum » для отдельных целых чисел.
- Интервальная арифметика позволяет представлять числа в виде интервалов и получать гарантированные оценки результатов. Обычно он основан на другой арифметике, в частности на плавающей запятой.
- Системы компьютерной алгебры, такие как Mathematica , Maxima и Maple, часто могут обрабатывать иррациональные числа, как или полностью «формальным» способом, не имея дело с конкретным кодированием значения. Такая программа может точно оценивать такие выражения, как « », потому что она запрограммирована на непосредственную обработку лежащих в основе математических расчетов, вместо использования приблизительных значений для каждого промежуточного вычисления. π {\ displaystyle \ pi} 3 {\ displaystyle {\ sqrt {3}}} грех ( 3 π ) {\ Displaystyle \ грех (3 \ пи)}
История
В 1914 году Леонардо Торрес Кеведо у разработал электромеханическую версию Чарльза Бэббиджа «s Analytical Engine , и включал арифметику с плавающей точкой. В 1938 году Конрад Цузе из Берлина завершил разработку Z1 , первого двоичного программируемого механического компьютера ; он использует 24-битное двоичное представление числа с плавающей запятой с 7-битовой экспонентой со знаком, 17-битным значащим (включая один неявный бит) и знаковым битом. {1} / _ {\ infty} = 0} 0 × ∞ {\ displaystyle 0 \ times \ infty}
Конрад Цузе , архитектор компьютера Z3 , который использует 22-битное двоичное представление с плавающей запятой.Цузе также предложил, но не завершил тщательно округленную арифметику с плавающей запятой, которая включает и представления NaN, предвосхищая особенности стандарта IEEE на четыре десятилетия. Напротив, фон Нейман рекомендовал не использовать числа с плавающей запятой для машины IAS 1951 года , утверждая, что арифметика с фиксированной запятой предпочтительнее. ± ∞ {\ displaystyle \ pm \ infty}
Первым коммерческим компьютером с аппаратным обеспечением с плавающей запятой был компьютер Zuse Z4 , разработанный в 1942–1945 годах. В 1946 году Bell Laboratories представила Mark V, в котором реализованы десятичные числа с плавающей запятой .
Pilot ACE имеет двоичную арифметику с плавающей точкой, и он был введен в эксплуатацию в 1950 году в Национальной физической лаборатории Великобритании . Тридцать три были позже проданы на коммерческой основе под названием English Electric DEUCE . На самом деле арифметика реализована в программном обеспечении, но при тактовой частоте в один мегагерц скорость операций с плавающей и фиксированной точкой в этой машине была изначально выше, чем у многих конкурирующих компьютеров.
В 1954 году последовал серийный IBM 704 ; он ввел использование смещенной экспоненты . В течение многих десятилетий после этого аппаратное обеспечение с плавающей запятой было, как правило, дополнительной функцией, и компьютеры, которые имели это, назывались «научными компьютерами» или имели возможность « научных вычислений » (SC) (см. Также Расширения для научных вычислений (XSC). )). Лишь после выпуска Intel i486 в 1989 году персональные компьютеры общего назначения имели аппаратную поддержку операций с плавающей запятой в качестве стандартной функции.
Серия UNIVAC 1100/2200 , представленная в 1962 году, поддерживала два представления с плавающей запятой:
- Одинарная точность : 36 битов, организованных как 1-битовый знак, 8-битная экспонента и 27-битовая мантисса.
- Двойная точность : 72 бита, организованные как 1-битовый знак, 11-битная экспонента и 60-битная мантисса.
IBM 7094 , также введен в 1962 году, поддерживает с одинарной точностью и двойной точностью представления, но без связи с представлениями в UNIVAC в. Действительно, в 1964 году IBM представила шестнадцатеричные представления с плавающей запятой в своих мэйнфреймах System / 360 ; эти же представления все еще доступны для использования в современных системах z / Architecture . Однако в 1998 году IBM включила IEEE-совместимую двоичную арифметику с плавающей запятой в свои мэйнфреймы; в 2005 году IBM также добавила IEEE-совместимую десятичную арифметику с плавающей запятой.
Первоначально компьютеры использовали множество различных представлений для чисел с плавающей запятой. Отсутствие стандартизации на уровне мэйнфреймов было постоянной проблемой к началу 1970-х годов для тех, кто писал и поддерживал исходный код более высокого уровня; Эти стандарты производителей с плавающей запятой различались по размеру слов, представлению, способу округления и общей точности операций. Совместимость с плавающей запятой между несколькими вычислительными системами остро нуждалась в стандартизации к началу 1980-х годов, что привело к созданию стандарта IEEE 754, когда 32-битное (или 64-битное) слово стало обычным явлением. Этот стандарт был в значительной степени основан на предложении Intel, которая разрабатывала числовой сопроцессор i8087 ; Компания Motorola, которая разрабатывала 68000 примерно в то же время, также внесла значительный вклад.
В 1989 году математик и ученый-компьютерщик Уильям Кахан был удостоен премии Тьюринга как главный архитектор этого предложения; ему помогали его ученик (Джером Кунен) и приглашенный профессор (Гарольд Стоун).
Среди нововведений x86 можно выделить следующие:
- Точно заданное представление с плавающей запятой на уровне битовой строки, чтобы все совместимые компьютеры интерпретировали битовые шаблоны одинаково. Это позволяет точно и эффективно передавать числа с плавающей запятой с одного компьютера на другой (после учета порядка байтов ).
- Точно заданное поведение для арифметических операций: результат должен быть получен так, как если бы бесконечно точная арифметика использовалась для получения значения, которое затем округляется в соответствии с определенными правилами. Это означает, что совместимая компьютерная программа всегда будет давать один и тот же результат при задании определенного ввода, таким образом смягчая почти мистическую репутацию, которую вычисления с плавающей запятой приобрели за свое, казалось бы, недетерминированное поведение.
- Способность исключительных условий (переполнение, деление на ноль и т. Д.) Распространяться через вычисление щадящим образом, а затем управляться программным обеспечением.
Диапазон чисел с плавающей запятой
Число с плавающей запятой состоит из двух компонентов с фиксированной запятой , диапазон которых зависит исключительно от количества битов или цифр в их представлении. В то время как компоненты линейно зависят от их диапазона, диапазон с плавающей запятой линейно зависит от диапазона значений и экспоненциально от диапазона компонента экспоненты, что придает числам значительно более широкий диапазон. {U + 1} \ вправо)}
который имеет B — 1 в качестве значения для каждой цифры мантиссы и максимально возможное значение для экспоненты.
Кроме того, есть представимые значения строго между -UFL и UFL. А именно положительные и отрицательные нули , а также денормализованные числа .
IEEE 754: с плавающей запятой в современных компьютерах
IEEE стандартизированы компьютера представление для двоичных чисел с плавающей точкой в стандарте IEEE 754 (ака IEC 60559) , в 1985 году первый стандарт следуют почти все современные машины. Он был пересмотрен в 2008 году . Мэйнфреймы IBM поддерживают собственный шестнадцатеричный формат с плавающей запятой IBM и десятичный формат с плавающей запятой IEEE 754-2008 в дополнение к двоичному формату IEEE 754. Серия Cray T90 имела версию IEEE, но SV1 по- прежнему использует формат Cray с плавающей запятой.
Стандарт предусматривает множество тесно связанных форматов, различающихся лишь некоторыми деталями. Пять из этих форматов называются базовыми форматами , а другие — форматами с расширенной точностью и форматом с расширенной точностью . В компьютерном оборудовании и языках особенно широко используются три формата:
- Одинарная точность (binary32), обычно используется для представления типа «float» в семействе языков C (хотя это не гарантируется ). Это двоичный формат, который занимает 32 бита (4 байта), а его значение имеет точность 24 бита (около 7 десятичных цифр).
- Двойная точность (binary64), обычно используется для представления типа «double» в семействе языков C (хотя это не гарантируется ). Это двоичный формат, занимающий 64 бита (8 байтов), а его значение имеет точность 53 бита (около 16 десятичных цифр).
- Двойной расширенный , также неоднозначно называемый форматом «расширенной точности». Это двоичный формат, который занимает не менее 79 бит (80, если правило скрытых / неявных битов не используется), а его значение имеет точность не менее 64 бит (около 19 десятичных цифр). Стандарты C99 и C11 семейства языков C в своем приложении F («Арифметика с плавающей запятой IEC 60559») рекомендуют использовать такой расширенный формат как « long double ». Формат, удовлетворяющий минимальным требованиям (64-битная точность значащей, 15-битная экспонента, что соответствует 80 битам), обеспечивается архитектурой x86 . Часто на таких процессорах этот формат может использоваться с «длинным двойным», хотя расширенная точность недоступна для MSVC. Для целей выравнивания многие инструменты хранят это 80-битное значение в 96-битном или 128-битном пространстве. На других процессорах «длинный двойной» может означать более крупный формат, такой как четырехкратная точность или просто двойная точность, если какая-либо форма повышенной точности недоступна.
Повышение точности представления с плавающей запятой обычно снижает количество накопленных ошибок округления, вызванных промежуточными вычислениями. Менее распространенные форматы IEEE включают:
- Четверная точность (binary128). Это двоичный формат, который занимает 128 бит (16 байтов), а его значение имеет точность 113 бит (около 34 десятичных цифр).
- Decimal64 и decimal128 форматы с плавающей запятой. Эти форматы, наряду с форматом decimal32 , предназначены для правильного округления десятичных чисел .
- Половинная точность , также называемая binary16, 16-битное значение с плавающей запятой. Он используется в графическом языке NVIDIA Cg и в стандарте openEXR.
Любое целое число с абсолютным значением меньше 2 24 может быть точно представлено в формате одинарной точности, а любое целое число с абсолютным значением меньше 2 53 может быть точно представлено в формате двойной точности. Кроме того, может быть представлен широкий диапазон мощностей, в два раза превышающие такое число. Эти свойства иногда используются для чисто целочисленных данных, чтобы получить 53-битные целые числа на платформах, которые имеют числа с плавающей запятой двойной точности, но только 32-битные целые числа.
Стандарт определяет некоторые специальные значения и их представление: положительная бесконечность (+ ∞), отрицательная бесконечность (−∞), отрицательный ноль (-0), отличный от обычного («положительного») нуля, и «не числовые» значения ( NaNs ).
Сравнение чисел с плавающей запятой, как определено стандартом IEEE, немного отличается от обычного целочисленного сравнения. Отрицательный и положительный ноль сравниваются как равные, и каждое NaN сравнивается как неравное с каждым значением, включая его самого. Все значения, кроме NaN, строго меньше + ∞ и строго больше −∞. Конечные числа с плавающей запятой упорядочиваются так же, как и их значения (в наборе действительных чисел).
Внутреннее представительство
Числа с плавающей запятой обычно упаковываются в компьютерные данные как знаковый бит, поле экспоненты и мантисса слева направо. Для двоичных форматов IEEE 754 (базовых и расширенных), которые имеют существующую аппаратную реализацию, они распределяются следующим образом:
Хотя показатель степени может быть положительным или отрицательным, в двоичных форматах он сохраняется как беззнаковое число, к которому добавлено фиксированное «смещение». Значения всех нулей в этом поле зарезервированы для нулей и субнормальных чисел ; значения всех единиц зарезервированы для бесконечностей и NaN. Диапазон экспоненты для нормализованных чисел составляет [-126, 127] для одинарной точности, [-1022, 1023] для двойной точности или [-16382, 16383] для четверной точности. Нормализованные числа исключают субнормальные значения, нули, бесконечности и NaN.
В форматах двоичного обмена IEEE ведущий 1 бит нормализованной мантиссы фактически не сохраняется в компьютерных данных. Это называется «скрытым» или «неявным» битом. Из-за этого формат одинарной точности на самом деле имеет значение с 24 битами точности, формат двойной точности имеет 53, а quad — 113.
Например, выше было показано, что π, округленное до 24 бит точности, имеет:
- знак = 0; е = 1; s = 110010010000111111011011 (включая скрытый бит)
Сумма смещения экспоненты (127) и показателя степени (1) равна 128, поэтому в формате с одинарной точностью это представлено как
Пример макета для 32-битной плавающей запятой :
и 64-битный макет аналогичен .
Особые ценности
Подписанный ноль
В стандарте IEEE 754 ноль имеет знак, что означает, что существует как «положительный ноль» (+0), так и «отрицательный ноль» (-0). В большинстве сред выполнения положительный ноль обычно печатается как «0», а отрицательный ноль — как «-0». Два значения ведут себя как равные при числовых сравнениях, но некоторые операции возвращают разные результаты для +0 и -0. Например, 1 / (- 0) возвращает отрицательную бесконечность, а 1 / + 0 возвращает положительную бесконечность (так что тождество 1 / (1 / ± ∞) = ± ∞ сохраняется). Другие общие функции с разрывом в точке x = 0, которые могут трактовать +0 и −0 по-разному, включают log ( x ), signum ( x ) и главный квадратный корень из y + xi для любого отрицательного числа y . Как и в любой схеме аппроксимации, операции с «отрицательным нулем» могут иногда вызывать путаницу. Например, в IEEE 754 x = y не всегда означает 1 / x = 1 / y , так как 0 = −0, но 1/0 ≠ 1 / −0 .
Субнормальные числа
Ненормальные значения заполняют промежуток потери значимости значениями, абсолютное расстояние между которыми такое же, как и для соседних значений сразу за промежутком потери значимости. Это усовершенствование по сравнению со старой практикой, заключающейся в том, что в промежутке недостающего заполнения просто ноль, а результаты недостаточного заполнения заменялись на ноль (сбрасывание до нуля).
Современное оборудование с плавающей запятой обычно обрабатывает субнормальные значения (а также нормальные значения) и не требует программной эмуляции субнормальных значений.
Бесконечности
Бесконечности расширенной строки действительных чисел могут быть представлены в типах данных с плавающей запятой IEEE, как и обычные значения с плавающей запятой, такие как 1, 1,5 и т. Д. Они никоим образом не являются значениями ошибок, хотя часто (но не всегда, поскольку это зависит от округления), используемого в качестве значений замены при переполнении. 0 = 1. Там есть два типа NaN: тихие NaN по умолчанию и, необязательно, сигнальные NaN. Сигнализация NaN в любой арифметической операции (включая численные сравнения) вызовет выдачу сигнала об исключении «недопустимая операция» .
Представление NaN, указанное в стандарте, имеет некоторые неопределенные биты, которые могут использоваться для кодирования типа или источника ошибки; но для этой кодировки нет стандарта. Теоретически, сигнализация NaN может использоваться системой времени выполнения для пометки неинициализированных переменных или расширения чисел с плавающей запятой другими специальными значениями без замедления вычислений с обычными значениями, хотя такие расширения не распространены.
Обоснование дизайна IEEE 754
Распространенным заблуждением является то, что обсуждаемые здесь более эзотерические особенности стандарта IEEE 754, такие как расширенные форматы, NaN, бесконечности, субнормальные значения и т. Д., Представляют интерес только для численных аналитиков или для продвинутых численных приложений; На самом деле верно и обратное: эти функции разработаны для обеспечения надежных и надежных параметров по умолчанию для неискушенных программистов, в дополнение к поддержке сложных числовых библиотек экспертами. Ключевой разработчик IEEE 754 Уильям Кахан отмечает, что неправильно «… [считать] особенности стандарта IEEE 754 для двоичной арифметики с плавающей запятой, которые … [не] считаются функциями, которые могут использоваться никем, кроме числовых Эксперты. Факты совершенно противоположны. В 1977 году эти функции были встроены в Intel 8087, чтобы обслуживать максимально широкий рынок … Анализ ошибок показывает нам, как разработать арифметику с плавающей запятой, такую как стандарт IEEE 754, умеренно толерантную к хорошей. — означает невежество среди программистов ».
- Специальные значения, такие как бесконечность и NaN, гарантируют, что арифметика с плавающей запятой будет алгебраически завершена, так что каждая операция с плавающей запятой дает четко определенный результат и не будет — по умолчанию — вызывать машинное прерывание или ловушку. Более того, выбор специальных значений, возвращаемых в исключительных случаях, был разработан так, чтобы во многих случаях давать правильный ответ, например, непрерывные дроби, такие как R (z): = 7 — 3 / [z — 2 — 1 / (z — 7 + 10 / [z — 2 — 2 / (z — 3)])] даст правильный ответ во всех входных данных в соответствии с арифметикой IEEE 754, поскольку потенциальное деление на ноль, например, в R (3) = 4.6, правильно обрабатывается как + бесконечность и поэтому можно смело игнорировать. Как отметил Кахан, необработанная ловушка, следующая за переполнением преобразования с плавающей запятой в 16-битное целое число, которое привело к потере ракеты Ariane 5 , не произошло бы в соответствии с политикой с плавающей запятой по умолчанию IEEE 754.
- Субнормальные числа гарантируют, что для конечных чисел с плавающей запятой x и y, x — y = 0 тогда и только тогда, когда x = y, как ожидалось, но чего не было в более ранних представлениях с плавающей запятой.
- Обоснование конструкции 80-битного формата x87 Кахан отмечает: «Этот расширенный формат предназначен для использования с незначительной потерей скорости для всех, кроме простейших арифметических операций с операндами с плавающей запятой и двойными операндами. Например, его следует использовать для временных переменных в циклах, которые реализуют повторения, такие как полиномиальные вычисления, скалярные произведения, частичные и непрерывные дроби. Это часто предотвращает преждевременное переполнение / потеря значимости или серьезную локальную отмену, которая может испортить простые алгоритмы «. Вычисление промежуточных результатов в расширенном формате с высокой точностью и расширенным показателем имеет прецедентов в исторической практике научного расчета , так и в оформлении научных калькуляторов , например , Hewlett-Packard «S финансовые калькуляторы выполнены арифметические и финансовые функции трех наиболее значимых десятичных знаков , чем они хранятся или отображается. Реализация расширенной точности позволила легко разработать стандартные библиотеки элементарных функций, которые обычно давали результаты с двойной точностью в пределах одной единицы на последнем месте (ULP) на высокой скорости.
- Правильное округление значений до ближайшего представимого значения позволяет избежать систематических ошибок в расчетах и замедляет рост ошибок. Округление связей до четного устраняет статистическую ошибку, которая может возникнуть при добавлении аналогичных цифр.
- Направленное округление предназначалось для помощи при проверке границ ошибок, например, в интервальной арифметике. Он также используется при реализации некоторых функций.
- Математическая основа операций позволяла относительно легко строить высокоточные многословные арифметические подпрограммы.
Свойство форматов одинарной и двойной точности состоит в том, что их легко сортировать без использования оборудования с плавающей запятой. Их биты, интерпретируемые как целое число с дополнением до двух, уже правильно сортируют положительные значения, а отрицательные — наоборот. С помощью xor, изменяющего знаковый бит для положительных значений и всех битов для отрицательных значений, все значения становятся сортируемыми как целые числа без знака (с -0 <+0 ). Неясно, предназначено ли это свойство.
Другие известные форматы с плавающей запятой
В дополнение к широко используемым стандартным форматам IEEE 754 , другие форматы с плавающей запятой используются или использовались в определенных областях, специфичных для домена.
- Для формата Bfloat16 требуется такой же объем памяти (16 бит), что и для формата IEEE 754 с половинной точностью , но для экспоненты выделяется 8 битов вместо 5, что обеспечивает тот же диапазон, что и для числа IEEE 754 с одинарной точностью . Компромисс заключается в уменьшении точности, так как поле значения уменьшается с 10 до 7 бит. Этот формат в основном используется при обучении моделей машинного обучения , где дальность важнее точности. Многие ускорители машинного обучения обеспечивают аппаратную поддержку этого формата.
- Формат TensorFloat-32 обеспечивает лучшее из форматов Bfloat16 и половинной точности, имея 8 бит экспоненты в качестве первого и 10 бит поля значимости во втором. Этот формат был представлен компанией Nvidia , которая обеспечивает его аппаратную поддержку в тензорных ядрах своих графических процессоров на основе архитектуры Nvidia Ampere. Недостатком этого формата является его общий размер 19 бит, что не является степенью 2. Однако, согласно Nvidia, этот формат должен использоваться только внутренними аппаратными средствами для ускорения вычислений, в то время как входные и выходные данные должны храниться в 32-битный формат IEEE 754 с одинарной точностью.
Тип | Подписать | Экспонента | Поле значимости | Всего бит |
---|---|---|---|---|
Половинная точность | 1 | 5 | 10 | 16 |
Bfloat16 | 1 | 8 | 7 | 16 |
ТензорФлот-32 | 1 | 8 | 10 | 19 |
Одинарная точность | 1 | 8 | 23 | 32 |
Представимые числа, преобразование и округление
По своей природе все числа, выраженные в формате с плавающей запятой, являются рациональными числами с завершающим расширением в соответствующем основании (например, завершающим десятичным расширением в базе-10 или завершающим двоичным расширением в базе-2). Иррациональные числа, такие как π или √2, или непрерывные рациональные числа должны быть аппроксимированы. Количество цифр (или битов) точности также ограничивает набор рациональных чисел, которые могут быть представлены точно. Например, десятичное число 123456789 не может быть точно представлено, если доступны только восемь десятичных цифр точности (будет округлено до 123456790 или 123456780, если крайняя правая цифра 0 явно не представлена), то же самое относится к незавершенным цифрам (. 5 округляется до 0,5555555 или 0,5555556).
Когда число представлено в каком-либо формате (например, символьной строке), который не является собственным представлением с плавающей запятой, поддерживаемым в компьютерной реализации, то для его использования в этой реализации потребуется преобразование. Если число может быть представлено точно в формате с плавающей запятой, тогда преобразование будет точным. Если нет точного представления, тогда преобразование требует выбора того, какое число с плавающей запятой использовать для представления исходного значения. Выбранное представление будет иметь значение, отличное от исходного, и скорректированное таким образом значение называется округленным значением .
Имеет ли рациональное число завершающее расширение или нет, зависит от основания. Например, в базе 10 число 1/2 имеет завершающее расширение (0,5), а число 1/3 — нет (0,333 …). В системе с основанием 2 завершаются только рациональные числа со знаменателем, равным степени 2 (например, 1/2 или 3/16). Любое рациональное число со знаменателем, у которого есть простой множитель, отличный от 2, будет иметь бесконечное двоичное расширение. Это означает, что числа, которые кажутся короткими и точными при записи в десятичном формате, могут нуждаться в приближении при преобразовании в двоичное число с плавающей запятой. Например, десятичное число 0,1 не может быть представлено в двоичной системе с плавающей запятой какой-либо конечной точности; точное двоичное представление будет иметь бесконечную последовательность «1100»:
- е = −4; s = 1100110011001100110011001100110011 …,
где, как и раньше, s — мантисса, а e — показатель степени.
При округлении до 24 бит это становится
- е = −4; s = 110011001100110011001101,
что на самом деле составляет 0,100000001490116119384765625 в десятичной системе.
В качестве дополнительного примера действительное число π , представленное в двоичном формате как бесконечная последовательность битов, равно
- 11.0010010000111111011010101000100010000101101000110000100011010011 …
но это
- 11.0010010000111111011011
при приближении округлением до точности 24 бита.
В двоичной системе с плавающей запятой одинарной точности это представлено как s = 1.10010010000111111011011 с e = 1. Это имеет десятичное значение
- 3.141592 7410125732421875,
тогда как более точное приближение истинного значения π
- 3,14159265358979323846264338327950 …
Результат округления отличается от истинного значения примерно на 0,03 части на миллион и соответствует десятичному представлению π в первых 7 цифрах. Разница заключается в ошибке дискретизации и ограничивается машинным эпсилоном .
Арифметическая разница между двумя последовательными представляемыми числами с плавающей запятой, которые имеют одинаковый показатель степени, называется единицей на последнем месте (ULP). Например, если нет представимого числа, лежащего между представимыми числами 1.45a70c22 шестнадцатеричный и 1.45a70c24 шестнадцатеричный , ULP составляет 2 × 16 −8 или 2 −31 . Для чисел с показателем степени 0 по основанию 2, т. Е. Чисел с абсолютным значением выше или равным 1, но ниже 2, ULP составляет точно 2-23 или около 10-7 с одинарной точностью и ровно 2-53. или около 10 -16 с двойной точностью. Обязательное поведение IEEE-совместимого оборудования заключается в том, что результат находится в пределах половины ULP.
Режимы округления
Округление используется, когда для точного результата операции с плавающей запятой (или преобразования в формат с плавающей запятой) потребуется больше цифр, чем цифр в значимой величине. IEEE 754 требует правильного округления : то есть округленный результат такой, как если бы для вычисления значения использовалась бесконечно точная арифметика, а затем округлялась (хотя в реализации для обеспечения этого требуется только три дополнительных бита). Существует несколько различных схем округления (или режимов округления ). Исторически усечение было типичным подходом. С момента появления стандарта IEEE 754 чаще используется метод по умолчанию ( округление до ближайшего, привязка к четному , иногда называемое округлением Банковского). Этот метод округляет идеальный (бесконечно точный) результат арифметической операции до ближайшего представимого значения и дает это представление в качестве результата. В случае ничьей выбирается значение, при котором мантисса заканчивается четной цифрой. Стандарт IEEE 754 требует, чтобы одинаковое округление применялось ко всем фундаментальным алгебраическим операциям, включая извлечение квадратного корня и преобразования, когда есть числовой результат (не NaN). Это означает, что результаты операций IEEE 754 полностью определяются во всех битах результата, за исключением представления NaN. («Библиотечные» функции, такие как косинус и логарифм, не требуются.)
Также доступны альтернативные варианты округления. IEEE 754 определяет следующие режимы округления:
- округление до ближайшего, где связывает округление до ближайшей четной цифры в требуемой позиции (по умолчанию и, безусловно, наиболее распространенный режим)
- округление до ближайшего, где связи округляются от нуля (необязательно для двоичных чисел с плавающей запятой и обычно используется в десятичных)
- округлить в большую сторону (в сторону + ∞; отрицательные результаты, таким образом, округлить в сторону нуля)
- округлить вниз (в сторону −∞; отрицательные результаты, таким образом, округлить от нуля)
- округлить до нуля (усечение; это похоже на обычное поведение преобразований с плавающей запятой в целые числа, которые преобразуют -3,9 в -3 и 3,9 в 3)
Альтернативные режимы полезны, когда количество вводимых ошибок должно быть ограничено. Приложения, которым требуется ограниченная ошибка, — это арифметика с плавающей запятой и интервальной арифметики . Альтернативные режимы округления также полезны при диагностике числовой нестабильности: если результаты подпрограммы существенно различаются между округлением до + и — бесконечности, то это, вероятно, численно нестабильно и подвержено ошибкам округления.
Преобразование двоичного числа в десятичное
Преобразование двоичного числа с плавающей запятой двойной точности в десятичную строку — обычная операция, но алгоритм, дающий как точные, так и минимальные результаты, не появлялся в печати до 1990 года, с Dragon4 Стила и Уайта. Некоторые из улучшений с тех пор включают:
- Dtoa.c Дэвида М. Гэя , практическая реализация многих идей в Dragon4 с открытым исходным кодом. Также включает синтаксический анализатор десятичных строк.
- Grisu3 с 4-кратным ускорением, так как он устраняет использование бигнумов . Необходимо использовать с резервным вариантом, так как он не работает примерно в 0,5% случаев.
- Errol3, всегда успешный алгоритм, похожий на Grisu3, но более медленный. Очевидно, не так хорошо, как преждевременное завершение работы Грису с запасным вариантом.
- Ryū, всегда успешный алгоритм, который быстрее и проще, чем Grisu3.
Многие современные языковые среды используют Grisu3 с резервным вариантом Dragon4.
Арифметические операции с плавающей точкой
Для простоты представления и понимания в примерах будет использоваться десятичная система счисления с точностью до 7 цифр, как и в формате decimal32 IEEE 754 . Основные принципы одинаковы для любой системы счисления или точности, за исключением того, что нормализация не является обязательной (она не влияет на числовое значение результата). Здесь s обозначает мантиссу, а e обозначает показатель степени.
Сложение и вычитание
Простой способ сложить числа с плавающей запятой — сначала представить их с одинаковым показателем степени.5
В деталях:
e=5; s=1.234567 (123456.7) + e=2; s=1.017654 (101.7654)
e=5; s=1.234567 + e=5; s=0.001017654 (after shifting) -------------------- e=5; s=1.235584654 (true sum: 123558.4654)
Это истинный результат, точная сумма операндов. Он будет округлен до семи цифр, а затем при необходимости нормализован. Конечный результат
e=5; s=1.235585 (final sum: 123558.5)
Три младшие цифры второго операнда (654) по существу теряются. Это ошибка округления . В крайнем случае сумма двух ненулевых чисел может быть равна одному из них:
e=5; s=1.234567 + e=−3; s=9.876543
e=5; s=1.234567 + e=5; s=0.00000009876543 (after shifting) ---------------------- e=5; s=1.23456709876543 (true sum) e=5; s=1.234567 (after rounding and normalization)
В приведенных выше концептуальных примерах может показаться, что сумматор должен предоставить большое количество дополнительных цифр для обеспечения правильного округления; однако для двоичного сложения или вычитания с использованием методов тщательной реализации необходимо переносить только защитный бит, бит округления и один дополнительный липкий бит сверх точности операндов.
Другая проблема потери значимости возникает, когда вычитаются приближения к двум почти равным числам. В следующем примере e = 5; s = 1,234571 и e = 5; s = 1,234567 являются приближениями к рациональным числам 123457,1467 и 123456,659.
e=5; s=1.234571 − e=5; s=1.234567 ---------------- e=5; s=0.000004 e=−1; s=4.000000 (after rounding and normalization)
Разница с плавающей запятой вычисляется именно потому, что числа близки — лемма Стербенца гарантирует это, даже в случае потери значимости, когда поддерживается постепенное уменьшение числа . Несмотря на это, разность исходных чисел составляет e = −1; s = 4.877000, что более чем на 20% отличается от разницы e = −1; s = 4,000000 приближений. В крайних случаях могут быть потеряны все значащие цифры точности. Эта отмена иллюстрирует опасность предположения, что все цифры вычисляемого результата значимы. Работа с последствиями этих ошибок — тема численного анализа ; см. также Проблемы с точностью .
Умножение и деление
Чтобы умножить, значения умножаются, в то время как показатели складываются, а результат округляется и нормализуется.
e=3; s=4.734612 × e=5; s=5.417242 ----------------------- e=8; s=25.648538980104 (true product) e=8; s=25.64854 (after rounding) e=9; s=2.564854 (after normalization)
Точно так же деление осуществляется путем вычитания показателя делимого из показателя делимого и деления значения делимого на значение делителя.
При умножении или делении нет проблем с отменой или поглощением, хотя небольшие ошибки могут накапливаться, когда операции выполняются последовательно. На практике, как эти операции осуществляются в цифровой логике может быть довольно сложным (см Бута алгоритма умножения и алгоритм Division ). Для быстрого и простого метода см. Метод Хорнера .
Работа в исключительных случаях
Вычисления с плавающей запятой на компьютере могут столкнуться с тремя типами проблем:
- Операция может быть математически неопределенной, например, ∞ / ∞ или деление на ноль .
- В принципе, операция может быть законной, но не поддерживается конкретным форматом, например, вычислением квадратного корня из -1 или обратного синуса из 2 (оба результата дают комплексные числа ).
- В принципе операция может быть законной, но результат может быть невозможно представить в указанном формате, поскольку показатель степени слишком велик или слишком мал для кодирования в поле показателя степени. Такое событие называется переполнением (показатель слишком велик), сгущенный (показатель слишком мала) или денормализация (точность потеря).
До стандарта IEEE такие условия обычно вызывали завершение программы или запускали какую-то ловушку, которую программист мог уловить. То, как это работает, зависело от системы, а это означало, что программы с плавающей запятой не были переносимы . (Термин «исключение», используемый в IEEE 754, является общим термином, означающим исключительное состояние, которое не обязательно является ошибкой и отличается от того, которое обычно определяется в языках программирования, таких как C ++ или Java, в которых знак « исключение »- это альтернативный поток управления, более близкий к тому, что в терминологии IEEE 754 называется« ловушкой ».)
Здесь обсуждается требуемый по умолчанию метод обработки исключений в соответствии с IEEE 754 (необязательный перехват IEEE 754 и другие режимы «альтернативной обработки исключений» не обсуждаются). Арифметические исключения (по умолчанию) должны быть записаны в «липкие» биты флага состояния. То, что они «липкие», означает, что они не сбрасываются следующей (арифметической) операцией, а остаются установленными до явного сброса. Таким образом, использование «липких» флагов позволяет откладывать тестирование исключительных условий до тех пор, пока не будет выполнено полное выражение или подпрограмма с плавающей запятой: без них исключительные условия, которые иначе нельзя было бы проигнорировать, потребовали бы явного тестирования сразу после каждой операции с плавающей запятой. По умолчанию операция всегда возвращает результат согласно спецификации без прерывания вычислений. Например, 1/0 возвращает + ∞, а также устанавливает бит флага деления на ноль (это значение по умолчанию, равное ∞, разработано для того, чтобы часто возвращать конечный результат при использовании в последующих операциях, поэтому его можно безопасно игнорировать).
Однако исходный стандарт IEEE 754 не рекомендовал операции для обработки таких наборов битов арифметических флагов исключения. Таким образом, хотя они были реализованы на оборудовании, изначально реализации языков программирования обычно не предоставляли средств для доступа к ним (кроме ассемблера). Со временем некоторые стандарты языков программирования (например, C99 / C11 и Fortran) были обновлены, чтобы указать методы доступа и изменения битов флага состояния. Версия стандарта IEEE 754 2008 г. теперь определяет несколько операций для доступа и обработки битов арифметических флагов. Модель программирования основана на одном потоке выполнения, и их использование несколькими потоками должно обрабатываться средствами, выходящими за рамки стандарта (например, C11 указывает, что флаги имеют локальное хранилище потока ).
IEEE 754 определяет пять арифметических исключений, которые должны быть записаны во флагах состояния («липкие биты»):
- неточность , устанавливается, если округленное (и возвращаемое) значение отличается от математически точного результата операции.
- недополнение , устанавливается, если округленное значение крошечное (как указано в IEEE 754) и неточное (или может быть ограничено, если оно имеет потерю денормализации, как в версии IEEE 754 1984 г.), возвращая субнормальное значение, включая нули.
- переполнение , устанавливается, если абсолютное значение округленного значения слишком велико для представления. Возвращается бесконечное или максимальное конечное значение, в зависимости от того, какое округление используется.
- деление на ноль , устанавливается, если результат бесконечен для заданных конечных операндов, возвращая бесконечность, либо + ∞, либо -∞.
- недопустимый , устанавливается, если результат с действительным знаком не может быть возвращен, например, sqrt (-1) или 0/0, возвращая тихий NaN.
Поставщики и ресурсы беспроводной связи RF
О компании RF Wireless World
Веб-сайт RF Wireless World является домом для поставщиков и ресурсов радиочастотной и беспроводной связи. На сайте представлены статьи, руководства, поставщики, терминология, исходный код (VHDL, Verilog, MATLAB, Labview), тестирование и измерения, калькуляторы, новости, книги, загрузки и многое другое.
Сайт RF Wireless World охватывает ресурсы по различным темам, таким как RF, беспроводная связь, vsat, спутник, радар, волоконная оптика, микроволновая печь, wimax, wlan, zigbee, LTE, 5G NR, GSM, GPRS, GPS, WCDMA, UMTS, TDSCDMA, bluetooth, Lightwave RF, z-wave, Интернет вещей (IoT), M2M, Ethernet и т. Д.Эти ресурсы основаны на стандартах IEEE и 3GPP. В них также есть академический раздел, который охватывает колледжи и университеты по инженерным дисциплинам и MBA.
Статьи о системах на основе Интернета вещей
Система обнаружения падений для пожилых людей на основе Интернета вещей : В статье рассматривается архитектура системы обнаружения падений, используемой для пожилых людей.
В нем упоминаются преимущества или преимущества системы обнаружения падений Интернета вещей.
Узнать больше➤
Также обратитесь к другим статьям о системах на основе Интернета вещей следующим образом:
• Система чистоты туалетов самолета.
• Система измерения столкновения
• Система отслеживания скоропортящихся продуктов и овощей
• Система помощи водителю
• Система умной торговли
• Система мониторинга качества воды.
• Система Smart Grid
• Система умного освещения на базе Zigbee
• Система интеллектуальной парковки на основе Zigbee.
• Система интеллектуальной парковки на основе LoRaWAN
RF Статьи о беспроводной связи
В этом разделе статей представлены статьи о физическом уровне (PHY), уровне MAC, стеке протоколов и сетевой архитектуре на основе WLAN, WiMAX, zigbee, GSM, GPRS, TD-SCDMA, LTE, 5G NR, VSAT, Gigabit Ethernet на основе IEEE / 3GPP и т. Д. .стандарты. Он также охватывает статьи, относящиеся к испытаниям и измерениям, по тестированию на соответствие, используемым для испытаний устройств на соответствие RF / PHY. УКАЗАТЕЛЬ СТАТЬИ ДЛЯ ССЫЛКИ >>.
Физический уровень 5G NR : Обработка физического уровня для канала 5G NR PDSCH и канала 5G NR PUSCH рассмотрена поэтапно. Это описание физического уровня 5G соответствует спецификациям физического уровня 3GPP. Читать дальше➤
Основы повторителей и типы повторителей : В нем объясняются функции различных типов ретрансляторов, используемых в беспроводных технологиях.Читать дальше➤
Основы и типы замирания : В этой статье рассматриваются мелкомасштабные замирания, крупномасштабные замирания, медленные, быстрые и т. Д., Которые используются в беспроводной связи. Читать дальше➤
Архитектура сотового телефона 5G : В этой статье рассматривается блок-схема сотового телефона 5G с внутренними модулями 5G. Архитектура сотового телефона. Читать дальше➤
Основы помех и типы помех: В этой статье рассматриваются помехи в соседнем канале, помехи в одном канале, ЭМ помехи, ICI, ISI, световые помехи, звуковые помехи и т. Д.Читать дальше➤
5G NR Раздел
В этом разделе рассматриваются функции 5G NR (New Radio), нумерология, диапазоны, архитектура, развертывание, стек протоколов (PHY, MAC, RLC, PDCP, RRC) и т. Д.
5G NR Краткий указатель ссылок >>
• Мини-слот 5G NR
• Часть полосы пропускания 5G NR
• 5G NR CORESET
• Форматы DCI 5G NR
• 5G NR UCI
• Форматы слотов 5G NR
• IE 5G NR RRC
• 5G NR SSB, SS, PBCH
• 5G NR PRACH
• 5G NR PDCCH
• 5G NR PUCCH
• Эталонные сигналы 5G NR
• 5G NR m-последовательность
• Золотая последовательность 5G NR
• 5G NR Zadoff Chu Sequence
• Физический уровень 5G NR
• Уровень MAC 5G NR
• Уровень 5G NR RLC
• Уровень 5G NR PDCP
Учебные пособия по беспроводным технологиям
В этом разделе рассматриваются учебные пособия по радиочастотам и беспроводной связи.Он охватывает учебные пособия по таким темам, как сотовая связь, WLAN (11ac, 11ad), wimax, bluetooth, zigbee, zwave, LTE, DSP, GSM, GPRS, GPS, UMTS, CDMA, UWB, RFID, радар, VSAT, спутник, WLAN, волновод, антенна, фемтосота, тестирование и измерения, IoT и т. Д. См. УКАЗАТЕЛЬ Учебников >>
Учебное пособие по 5G — В этом руководстве по 5G также рассматриваются следующие подтемы по технологии 5G:
Учебное пособие по основам 5G.
Полосы частот
руководство по миллиметровым волнам
Волновая рамка 5G мм
Зондирование волнового канала 5G мм
4G против 5G
Тестовое оборудование 5G
Сетевая архитектура 5G
Сетевые интерфейсы 5G NR
канальное зондирование
Типы каналов
5G FDD против TDD
Разделение сети 5G NR
Что такое 5G NR
Режимы развертывания 5G NR
Что такое 5G TF
Этот учебник GSM охватывает основы GSM, архитектуру сети, элементы сети, системные спецификации, приложения,
Типы пакетов GSM, структура кадров GSM или иерархия кадров, логические каналы, физические каналы,
Физический уровень GSM или обработка речи, вход в сеть мобильного телефона GSM, установка вызова или процедура включения питания,
MO-вызов, MT-вызов, VAMOS, AMR, MSK, модуляция GMSK, физический уровень, стек протоколов, основы мобильного телефона,
Планирование RF, нисходящая линия связи PS-вызова и восходящая линия связи PS.
➤Подробнее.
LTE Tutorial , охватывающий архитектуру системы LTE, охватывающий основы LTE EUTRAN и LTE Evolved Packet Core (EPC). Он обеспечивает связь с обзором системы LTE, радиоинтерфейсом LTE, терминологией LTE, категориями LTE UE, структурой кадра LTE, физическим уровнем LTE, Стек протоколов LTE, каналы LTE (логические, транспортные, физические), пропускная способность LTE, агрегация несущих LTE, передача голоса по LTE, расширенный LTE, Поставщики LTE и LTE vs LTE продвинутые.➤Подробнее.
RF Technology Stuff
Эта страница мира беспроводной радиосвязи описывает пошаговое проектирование преобразователя частоты RF на примере преобразователя RF UP диапазона 70 МГц в C.
для микрополосковой платы с использованием дискретных радиочастотных компонентов, а именно. Смесители, гетеродин, MMIC, синтезатор, опорный генератор OCXO,
колодки аттенюатора. ➤Подробнее.
➤Проектирование и разработка радиочастотных трансиверов
➤Конструкция RF фильтра
➤VSAT Система
➤Типы и основы микрополосковой печати
➤Основы работы с волноводом
Секция испытаний и измерений
В этом разделе рассматриваются контрольно-измерительные ресурсы, испытательное и измерительное оборудование для тестирования DUT на основе
Стандарты WLAN, WiMAX, Zigbee, Bluetooth, GSM, UMTS, LTE.ИНДЕКС испытаний и измерений >>
➤ Система PXI для T&M.
➤ Генерация и анализ сигналов
➤Измерения слоя PHY
➤Тест устройства на соответствие WiMAX
➤ Тест на соответствие Zigbee
➤ Тест на соответствие LTE UE
➤Тест на соответствие TD-SCDMA
Волоконно-оптическая технология
Оптоволоконный компонент , основы, включая детектор, оптический соединитель, изолятор, циркулятор, переключатели, усилитель,
фильтр, эквалайзер, мультиплексор, разъемы, демультиплексор и т. д.Эти компоненты используются в волоконно-оптической связи.
Оптические компоненты INDEX >>
➤Учебное пособие по оптоволоконной связи
➤APS в SDH
➤SONET основы
➤SDH Рамочная конструкция
➤SONET против SDH
Поставщики и производители беспроводных радиочастотных устройств
Сайт RF Wireless World охватывает производителей и поставщиков различных компонентов, систем и подсистем RF для ярких приложений, см. ИНДЕКС поставщиков >>.
Поставщики радиочастотных компонентов, включая радиочастотный изолятор, радиочастотный циркулятор, радиочастотный смеситель, радиочастотный усилитель, радиочастотный адаптер, радиочастотный разъем, радиочастотный модулятор, радиочастотный трансивер, PLL, VCO, синтезатор, антенну, генератор, делитель мощности, сумматор мощности, фильтр, аттенюатор, диплексор, дуплексер, микросхема резистора, микросхема конденсатора, индуктор микросхемы, ответвитель, оборудование ЭМС, программное обеспечение для проектирования радиочастот, диэлектрический материал, диод и т. д.Производители RF компонентов >>
➤Базовая станция LTE
➤RF Циркулятор
➤RF Изолятор
➤Кристаллический осциллятор
MATLAB, Labview, встроенные исходные коды
Раздел исходного кода RF Wireless World охватывает коды, связанные с языками программирования MATLAB, VHDL, VERILOG и LABVIEW.
Эти коды полезны для новичков в этих языках.
ИНДЕКС ИСХОДНОГО КОДА >>
➤3-8 декодер кода VHDL
➤Код MATLAB для дескремблера
➤32-битный код ALU Verilog
➤T, D, JK, SR триггеры labview коды
* Общая информация о здоровье населения *
Выполните эти пять простых действий, чтобы остановить коронавирус (COVID-19).
СДЕЛАЙТЕ ПЯТЬ
1. РУКИ: Часто мойте их.
2. КОЛЕНО: Откашляйтесь.
3. ЛИЦО: не трогайте его
4. НОГИ: держитесь на расстоянии более 3 футов (1 м) друг от друга
5. ЧУВСТВОВАТЬ: Болен? Оставайся дома
Используйте технологию отслеживания контактов >>, соблюдайте >> рекомендации по социальному дистанцированию и установить систему видеонаблюдения >> чтобы спасти сотни жизней. Использование концепции телемедицины стало очень популярным в таким странам, как США и Китай, остановить распространение COVID-19, поскольку это заразное заболевание.
RF Калькуляторы и преобразователи беспроводной связи
Раздел «Калькуляторы и преобразователи» охватывает ВЧ-калькуляторы, беспроводные калькуляторы, а также преобразователи единиц.
Сюда входят беспроводные технологии, такие как GSM, UMTS, LTE, 5G NR и т. Д.
СПРАВОЧНЫЕ КАЛЬКУЛЯТОРЫ Указатель >>.
➤ Калькулятор пропускной способности 5G NR
➤5G NR ARFCN против преобразования частоты
➤Калькулятор скорости передачи данных LoRa
➤LTE EARFCN для преобразования частоты
➤ Калькулятор антенны Яги
➤ Калькулятор времени выборки 5G NR
IoT-Интернет вещей Беспроводные технологии
Раздел IoT охватывает беспроводные технологии Интернета вещей, такие как WLAN, WiMAX, Zigbee, Z-wave, UMTS, LTE, GSM, GPRS, THREAD, EnOcean, LoRa, SIGFOX, WHDI, Ethernet,
6LoWPAN, RF4CE, Bluetooth, Bluetooth Low Power (BLE), NFC, RFID, INSTEON, X10, KNX, ANT +, Wavenis, Dash7, HomePlug и другие.Он также охватывает датчики Интернета вещей, компоненты Интернета вещей и компании Интернета вещей.
См. Главную страницу IoT >> и следующие ссылки.
➤ НИТЬ
➤EnOcean
➤Учебник по LoRa
➤Учебник по SIGFOX
➤WHDI
➤6LoWPAN
➤Zigbee RF4CE
➤NFC
➤Lonworks
➤CEBus
➤UPB
СВЯЗАННЫЕ ЗАПИСИ
RF Wireless Учебники
Различные типы датчиков
Поделиться страницей
Перевести
Настройка единой точки на беспроводной точке доступа
Настройка единой точки на беспроводной точке доступаЦель
Функция Single Point Setup обеспечивает централизованный метод администрирования и контроля беспроводных сервисов на нескольких устройствах.Настройка единой точки используется для создания единой группы или кластера точек беспроводного доступа (WAP). После кластеризации WAP вы можете просматривать, развертывать, настраивать и защищать беспроводную сеть как единое целое. Параметры устройства с настроенной настройкой единой точки распространяются на другие устройства, когда они присоединяются к кластеру.
Настройка единой точки очень полезна для облегчения планирования каналов и обмена такой информацией, как настройки виртуальной точки доступа (VAP), очередь качества обслуживания (QoS) и параметры радиосвязи в ваших беспроводных сервисах, чтобы уменьшить радиопомехи и максимизировать пропускную способность на беспроводная сеть.
Цель этого документа — объяснить, как настроить единую точку доступа на вашей точке доступа.
Примечание: Перед тем, как продолжить настройку, необходимо соблюдать следующие правила:
Кластер может быть создан только среди одной и той же модели из двух или более точек доступа, каждая из которых имеет включенную настройку одной точки и ссылается на одно и то же имя настройки одной точки.
Точки доступа должны находиться в одной сети или подсети и использовать один и тот же тип IP-адресации.Устройства с настроенными IPv6 и IPv4 не могут образовывать кластер.
Применимые устройства
- Серия WAP100 — WAP121, WAP150
- Серия WAP300
- Серия WAP500
Версия программного обеспечения
- 1.0.1.2 — WAP150, WAP361
- 1.0.6.2 — WAP121, WAP321
- 1.0.2.2 — WAP351
- 1.2.1.3– WAP551, WAP561, WAP371
- 1.0.0.17 — WAP571, WAP571E
Установка по одной точке
Шаг 1.Войдите в веб-утилиту и выберите Single Point Setup> Access Points .
Примечание: Меню веб-утилиты может различаться в зависимости от модели вашего WAP. Изображения ниже взяты из WAP361.
Примечание: После открытия страницы значки, отображаемые в правой части страницы, показывают, включена или отключена настройка единой точки. Если он включен, также указывается количество WAP, которые в настоящее время присоединены к кластеру.
Примечание: Вы можете редактировать настройки одной точки, только если настройка одной точки отключена. По умолчанию эта функция отключена на WAP.
Шаг 2. (Необязательно) В поле Location введите описание физического местоположения WAP-устройства. В этом примере используется зона приема.
Шаг 3. В поле Cluster Name введите имя кластера, к которому будет подключена WAP.В этом примере используется кластер-A.
Примечание: Имя кластера не отправляется другим точкам доступа, поэтому вы должны настроить одно и то же имя на каждом устройстве, которое является членом. Имя кластера должно быть уникальным для каждой настройки единой точки, которую вы настраиваете в сети.
Шаг 4. Выберите версию IP, которую должны использовать устройства WAP в кластере для связи с другими участниками. Версия IP для кластеризации по умолчанию — IPv4.
Шаг 5.Введите приоритет кластера для выбора доминирующего WAP (контроллера кластера). Чем выше число, которое вы установите, тем выше шанс, что эта точка доступа станет доминирующей точкой доступа. В случае равенства доминирующим становится наименьший адрес управления доступом к среде (MAC).
Примечание: В этом примере используется 1.
Шаг 6. Нажмите кнопку Enable Single Point Setup .
WAP начнет поиск других WAP в подсети, настроенных с тем же именем кластера и версией IP.При поиске других членов кластера статус указывает, что конфигурация применяется.
Шаг 7. Обновляйте страницу, пока не увидите новую конфигурацию. На странице «Точки доступа» отобразится таблица, в которой отображаются местоположения, MAC-адреса и IP-адреса точек доступа, обнаруженных в данный момент в кластере.
Шаг 8. Повторите все вышеперечисленные шаги для каждой дополнительной точки доступа WAP, которую вы хотите присоединить к кластеру. Обязательно обновляйте страницу точек доступа каждый раз, чтобы видеть самую последнюю конфигурацию.Если дополнительные точки доступа настроены с такими же параметрами кластера, точка доступа присоединится к кластеру, и информация о новом члене появится в таблице.
Примечание: Все WAP в кластере единой точки настройки теперь будут использовать одни и те же параметры конфигурации устройства. Изменения в настройках устройства на любом WAP в кластере будут распространены на другие участники.
Шаг 9. (Необязательно) Если вы больше не хотите, чтобы ваш WAP обменивался настройками конфигурации с другими, просто удалите его из кластера, нажав Отключить настройку одной точки .
Теперь вы должны успешно настроить единую точку доступа на своей точке доступа.
с плавающей точкой
- Введение в программирование
- 1. Элементы программирования
- 1.1 Ваша первая программа
- 1.2 Встроенные типы данных
- 1.3 Условные выражения и циклы
- 1,4 Массивы
- 1.5 Вход и выход
- 1.6 Пример использования: PageRank
- 2. Функции
- 2.1 Статические методы
- 2.2 Библиотеки и клиенты
- 2.3 Рекурсия
- 2.4 Пример: просачивание
- 3. ООП
- 3.1 Использование типов данных
- 3.2 Создание типов данных
- 3.3 Проектирование типов данных
- 3.4 Пример использования: N-Body
- 4.Структуры данных
- 4.1 Производительность
- 4.2 Сортировка и поиск
- 4.3 Стеки и очереди
- 4.4 Таблицы символов
- 4.5 Пример: маленький мир
- 1. Элементы программирования
- Компьютерные науки
- 5. Теория вычислений
- 5.1 Формальные языки
- 5.2 Машины Тьюринга
- 5,3 Универсальность
- 5.4 Вычислимость
- 5,5 Тяжелая проходимость
- 9.9 Криптография
- 6. Вычислительная машина
- 6.1 Представление информации
- 6.2 ИГРУШЕЧНАЯ машина
- 6.3 Программирование ИГРУШКИ
- 6.4 Виртуальная машина TOY
- 7. Сборка компьютера
- 7.1 Логическая логика
- 7.2 Базовая модель схемы
- 7.3 Комбинационные схемы
- 7.4 Последовательные схемы
- 7.5 Цифровые устройства
- 5. Теория вычислений
- За пределами
- 8. Системы
- 8.1 Программирование библиотеки
- 8.2 Компиляторы
- 8.3 Операционные системы
- 8.4 Сеть
- 8.5 Приложения Системы
- 9. Научные вычисления
- 9.1 с плавающей точкой
- 9.2 Символьные методы
- 9.3 Численное интегрирование
- 9.4 Дифференциальные уравнения
- 9,5 Линейная алгебра
- 9,6 Оптимизация
- 9.7 Анализ данных
- 9,8 Моделирование
- 8. Системы
- Сайты по теме
- Интернет-ресурсы
- FAQ
- Данные
- Код
- Исправленные ошибки
- Лекции
- Приложения
- А.Приоритет оператора
- B. Написание четкого кода
- C. Глоссарий
- D. ИГРУШКА Шпаргалка
- Матлаб Э.
- Онлайн-курс
- Шпаргалка по Java
- Программирование заданий
32-битные числа с плавающей запятой одинарной точности в деталях
В наши дни языка программирования имеют тенденцию быть максимально высокоуровневыми, чтобы немного облегчить жизнь программиста.Однако независимо от того, насколько продвинутый язык программирования, код все равно должен быть преобразован в машинный код с помощью компиляции, интерпретации или даже виртуальной машины, такой как JVM. Конечно, на этом этапе правила другие: процессор работает с адресами и регистрами без каких-либо классов, даже если ветки выглядят как условные переходы. Одним из наиболее важных аспектов этого выполнения является арифметическая операция, и сегодня мы поговорим об одном из этих «краеугольных камней» : числах с плавающей запятой и о том, как они могут повлиять на ваш код.
Краткое введение в историю
Потребность в обработке больших или малых значений присутствовала с самых первых дней появления компьютеров: даже первые проекты Аналитическая машина Чарльза Бэббиджа иногда включали арифметику с плавающей запятой наряду с обычной арифметикой целых чисел. В течение долгого времени формат с плавающей запятой использовался в основном для научных исследований, особенно в физике, из-за большого разнообразия данных. Чрезвычайно удобно, что расстояние между Землей и Солнцем может быть выражено в том же количестве бит, что и расстояние между атомами водорода и кислорода в молекулах воды с той же относительной точностью, и, что еще лучше, значения разных величин могут быть свободно умножены без больших потерь в точности.
Практически все ранние реализации чисел с плавающей запятой были программными из-за сложности аппаратных реализаций. Без этого общего стандарта каждому приходилось придумывать свои собственные форматы: так родились Microsoft Binary Format и IBM Floating Point Architecture ; последний все еще используется в некоторых областях, таких как прогнозирование погоды, хотя в настоящее время он встречается крайне редко.
Сопроцессор Intel 8087 , анонсированный в 1980 году, также использовал собственный формат под названием « x87 ».Это был первый сопроцессор, специально предназначенный для арифметики с плавающей точкой с целью замены медленных вызовов библиотеки машинным кодом. Затем, на основе формата x87, родился IEEE 754 как первая и успешная попытка создать универсальный стандарт для вычислений с плавающей запятой. Вскоре Intel начала интегрировать IEEE 754 в свои процессоры , и в настоящее время почти каждая система, за исключением некоторых встроенных, поддерживает формат с плавающей запятой.
Теория и эксперименты
В IEEE 754 двоичный формат с плавающей запятой одинарной точности , 32 бита разделены на 1-битный знаковый флаг, 8-битный флаг экспоненты и 23-битную дробную часть в указанном порядке (битовый знак — крайний левый бит) .Этой информации должно хватить для начала экспериментов! Давайте посмотрим, как число 1.0 выглядит в этом формате , используя этот простой код C :
union { плавать внутрь; без подписи; } конвертер; Converter.in = float_number; беззнаковые биты = converter.out;
Конечно, после получения переменной bits нам нужно только ее распечатать. Например, так:
1.0 | 1 | S: 0 E: 01111111 M: 00000000000000000000000
Здравый смысл подсказывает, что 1 может быть выражена в двоичной форме точки гофрировки как 1.0 * 2 0 , поэтому показатель степени равен 0, а мантисса равна 1, тогда как в IEEE 754 показатель степени равен 1111111 (127 в десятичной системе), а мантисса равна 0.
Тайна экспоненты проста: экспонента фактически сдвинута. Нулевой показатель степени представлен как 127; показатель степени 1 представлен как 128 и так далее. Максимальное значение экспоненты должно быть 255-127 = 128, а минимальное значение должно быть 0-127 = -127. Однако значения 255 и 0 зарезервированы, поэтому фактический диапазон составляет -126… 127.Мы поговорим об этих зарезервированных значениях позже.
Мантиссу объяснить еще проще. Двоичная мантисса имеет одно уникальное свойство : каждая мантисса в нормализованной форме, кроме нуля, начинается с 1 (это верно только для двоичных чисел). Далее, если число начинается с нуля, оно не нормализуется. Например, ненормализованный 0,000101 * 10 101 совпадает с нормализованным 1,01 * 10 1 . Благодаря этому нет необходимости записывать начальную единицу для нормализованных чисел: мы можем просто помнить об этом, экономя место для еще одного значащего бита.В нашем случае действительная мантисса — это 1 и 23 нуля, но поскольку 1 пропущена, это всего 23 нуля.
Попробуем другие числа по сравнению с 1.
1.0 | 1 | S: 0 E: 01111111 M: 00000000000000000000000
-1,0 | -1 | S: 1 E: 01111111 M: 00000000000000000000000
2.0 | 2 | S: 0 E: 10000000 M: 00000000000000000000000
4.0 | 4 | S: 0 E: 10000001 M: 00000000000000000000000
1/8 | 0.125 | S: 0 E: 01111100 M: 00000000000000000000000
Как мы видим, отрицательный знак просто инвертирует знак знака, не касаясь остального (это кажется очевидным, но это не всегда так в информатике: для целых чисел отрицательный знак намного сложнее, чем просто перевернуть один бит!) . Как и ожидалось, изменение показателя степени с помощью разных степеней двух работает.
1.0 | 1 | S: 0 E: 01111111 M: 00000000000000000000000
3.0 | 3 | S: 0 E: 10000000 M: 10000000000000000000000
5.0 | 5 | S: 0 E: 10000001 M: 01000000000000000000000
0,2 | 0,2 | S: 0 E: 01111100 M: 10011001100110011001101
Легко видеть, что числа 3 и 5 представлены как 1,1 и 1,01 с правильной степенью. 0.2 не должен сильно отличаться от них, но это так. Что случилось?
Проще объяснить по десятичным дробям . 0,2 — это то же число, что и 1/5. При этом не каждый радикал можно представить в виде десятичного числа с плавающей запятой: например, 2/3 равно 0.666666… Это происходит потому, что 3 не имеет нетривиальных общих делителей с 10 (10 = 2 * 5, ни один из них не равен 3). В то же время 2/3 можно легко представить в базе 12 как 0,8 (12 = 2 * 2 * 3). Тот же трюк справедлив и для двоичной системы. : 2 не имеет общих делителей с 5, поэтому 0,2 можно представить только как бесконечно длинный 0,00110011001100… В то же время у нас всего 23 значащих бита! Таким образом, мы неизбежно теряем точность.
Давайте попробуем с умножением.2 | 1 | S: 0 E: 01111111 M: 00000000000000000000000
И 1, и 0,2 * 0,2 * 25 печатаются как 1, но на самом деле они разные! Из-за потери точности 0,2 * 0,2 * 25 не то же самое, что 1, и выражение (0,2f * 0,2f * 25,0f == 1,0f) фактически ложно. В то же время, если сначала выполнить 25 * 0,2, то результат действительно правильный. Это означает, что правило (a * b) * c = a * (b * c) не всегда верно для чисел с плавающей запятой!
Специальные номера
Помните о том факте, что ноль никогда нельзя записать в нормализованной форме, потому что он не содержит единиц в своем двоичном представлении? Ноль — это особое число.
0 | 0 | S: 0 E: 00000000 M: 00000000000000000000000
-0 | -0 | S: 1 E: 00000000 M: 00000000000000000000000
Для нуля IEEE 754 использует значение экспоненты , равное 0, и значение мантиссы, равное 0. Кроме того, как вы можете видеть, на самом деле существует два нулевых значения: +0 и -0. С точки зрения сравнения , (0.0f == -0.0f), действительно верно, знак просто не в счет. +0 и -0 примерно соответствуют математической концепции бесконечно малого, положительного и отрицательного .-150 | 0 | S: 0 E: 00000000 M: 00000000000000000000000
Денормализованное число имеет значение виртуального показателя степени 1, но, в то же время, в них не пропущена 1 в качестве первой пропущенной цифры. Единственное последствие — денормализованные числа быстро теряют точность: для хранения чисел от 2 -128 до 2 -127 мы используем только 21 цифру информации вместо 23.
Легко видеть, что ноль — это частный случай денормализованного числа.Более того, как мы видим, наименьшее возможное число с плавающей запятой одинарной точности на самом деле равно 2 -149 , или приблизительно 1,4013 * 10 -45 .
Числа с показателем степени 11111111 зарезервированы для «другого конца» числовой шкалы: бесконечности и специального значения, называемого «Not a Number». 128 | inf | S: 0 E: 11111111 M: 00000000000000000000000
Как и в случае с нулями , бесконечность может быть как положительной, так и отрицательной.Это может быть достигнуто путем деления любого ненулевого числа на ноль или получения любого числа, превышающего максимально допустимое (которое немного меньше 2 128 ). Бесконечность обрабатывается следующим образом:
Infinity> Любое число
Бесконечность = Бесконечность
Бесконечность> -Бесконечность
Любое число / бесконечность = 0 (знак установлен правильно)
Бесконечность * Бесконечность = Бесконечность (опять же, знак установлен правильно)
Бесконечность / Бесконечность = NaN
Бесконечность * 0 = NaN
Not a Number или NaN , пожалуй, самое интересное значение с плавающей запятой.Его можно получить несколькими способами. Во-первых, это результат любой неопределенной формы :
Бесконечность * 0
0/0 или Бесконечность / Бесконечность
Infinity — Infinity или –Infinity + Infinity
Во-вторых, это может быть результатом каких-то нетривиальных операций . Степенная функция может возвращать NaN в случае любой из этих неопределенных форм: 0 0 , 1 Infinity , Infinity 0 .В этом случае любая операция, которая может привести к получению комплексного числа, может вернуть NaN: например, log (-1.0f), sqrt (-1.0f), sin (2.0f).
Наконец, любая операция с участием NaN , поскольку любой из операндов всегда возвращает NaN. Из-за этого NaN иногда может быстро «распространяться» через данные, как компьютерный вирус. Единственное исключение — min или max: эти функции должны возвращать аргумент, отличный от NaN. NaN никогда не равно какому-либо другому числу, даже самому себе (его можно использовать для проверки чисел против NaN).
Фактическое содержимое NaN определяется реализацией; IEEE 754 требует только, чтобы показатель степени был 11111111, мантисса должна быть ненулевой (ноль зарезервирован для бесконечности), а знак не имеет значения.
0/0 | -нан | S: 1 E: 11111111 M: 10000000000000000000000
IEEE 754 различает два типа NaN : тихий NaN и , передающий сигнал NaN . Их единственное отличие состоит в том, что передача сигналов NaN вызывает прерывание, а тихий NaN — нет.Опять же, приложение решает, генерирует ли оно тихое NaN или сигнальное NaN. Например, компилятор GCC C всегда генерирует тихий NaN, если явно не указано обратное.
Выводы
Чему мы можем научиться из всех приведенных выше фактов и экспериментов? На любом языке, работающем с типом данных с плавающей запятой, обратите внимание на следующее:
— Вам почти никогда не следует напрямую сравнивать два числа с плавающей запятой, если вы не знаете, что делаете! Лучше всего сравнить это с некоторой точностью.
if (a == b) — неверно!
if (fabsf (a — b) — Числа с плавающей запятой теряют точность , даже если вы просто работаете с такими, казалось бы, безобидными числами, как 0,2 или 71,3. Вы должны быть особенно осторожны при работе с большим количеством операций с плавающей запятой над одними и теми же данными: ошибки могут накапливаться довольно быстро. Если вы получаете неожиданные результаты и подозреваете ошибки округления, попробуйте использовать другой подход и минимизировать ошибки. — В мире арифметики с плавающей запятой умножение не ассоциативно : a * (b * c) не всегда равно (a * b) * c. — Следует принять дополнительные меры , если вы работаете с очень большими значениями, очень маленькими числами и / или числами, близкими к нулю: в случае переполнения или недостаточного числа эти значения будут преобразованы в + Infinty, -Infinity или 0. Числовые пределы для чисел с плавающей запятой одинарной точности приблизительно равны 1.175494e-38 до 3.402823e + 38 (от 1.4013e-45 до 3.402823e + 38, если мы также считаем денормализованные числа) а. — Остерегайтесь, если ваша система генерирует «тихий NaN» . Иногда это может помочь вам избежать сбоя приложения. Иногда это может испортить выполнение программы до неузнаваемости. В настоящее время операции с числами с плавающей запятой выполняются чрезвычайно быстро, со скоростью, сравнимой со скоростью обычной целочисленной арифметики: количество операций с плавающей запятой в секунду, или FLOPS , является, пожалуй, наиболее широко известным показателем производительности компьютера. .Единственным недостатком является то, что программист должен знать обо всех подводных камнях, касающихся точности и специальных значений с плавающей запятой. Об авторе с плавающей точкой Представление используется для представления действительных чисел (т.е. чисел с
дроби) Плавающий
точечное представление поддерживает огромный диапазон с разумным объемом памяти Примеры:
32-битный размер хранилища может представлять собой число о
В виде
большой как 10 45 о
В виде
маленький как 10 -45 Плавающий
точечное представление имеет следующие основные недостатки: о
Потенциал
потеря точности из-за ограниченного количества значащих цифр о
Относительно,
большие требования к хранилищу о
Медленный
расчеты Этот
обложек глав: о Обзор экспоненциальной записи о Представление с плавающей запятой в компьютерах о Вычисления с плавающей запятой о Стандарт с плавающей запятой IEEE 745 о Упакованный десятичный формат (BCD) о Условия переполнения и потери значимости Экспоненциальное представление или научное представление — условное представление
метод представления чисел с плавающей запятой Экспоненциальный
формат записи состоит из 6 компонентов о Мантисса о Знак мантиссы о Показатель о Знак экспоненты о Основание экспоненты о Расположение пункта фракционирования Пример: -50.5 х 10 -20 Дробная часть
положение точки гибкое и может быть изменено без изменения числа
величина Изменения
до точки дроби требует корректировки степени о
За
при каждом движении вправо показатель степени должен уменьшаться о
За
при каждом движении влево показатель степени должен увеличиваться тем не мение
смещение не должно быть произвольным, так как это может повлиять на точность
номер Если
мы ограничиваем мантиссу до 5 цифр, последнее представление приводит к потере 1
точка точности (т.е. ошибка) Компьютеры
использует метод представления, очень похожий на экспоненциальную запись Двоичный
используется вместо десятичного Место хранения
обычно используется размер 32, 64 и 128 бит Видеть
Рисунок 5.4 на стр. 132 для типичного 32-битного формата с плавающей запятой о
Крайний левый
бит — знак мантиссы о
Подписан
на 8 бит экспоненту о
Подписан
по 23 бит мантисса о
В
точка дроби подразумевается в начале мантиссы о
Экспонента
хранится с избытком-128 обозначение о
База
экспоненты принимается как основание 2 Компьютеры
использует множество различных проприетарных и стандартных представлений с плавающей запятой
методы В
следующие стандарты широко используются и будут изучены позже в главе о
IEEE
754 Стандарт представления с плавающей точкой Предполагать
следующий десятичный формат с плавающей запятой: SMMMMMMM (S = знак мантиссы, M = мантисса, десятичная точка
подразумевается в конце) В
приведенный выше формат предоставляет диапазон: 9999999 Давайте
введите 2 цифры экспоненты (EE) вместо 2 цифр мантиссы: SSEEMMMM (второй S — знак экспоненты) В
приведенный выше формат предоставляет диапазон: 0001 x 10 -99 до 9999 x 10 99 С участием
это представление мы пожертвовали 2 цифрами точности, чтобы увеличить
диапазон Там
существует компромисс между Precision и Range о
В
чем больше цифр для мантиссы, тем выше точность и меньше
диапазон о
В
чем больше цифр для экспоненты, тем выше диапазон и ниже
точность Плавающий
форматы точек имеют следующие атрибуты о
А
number назначается место для хранения (т.е.е. фиксированное количество бит) о
В
складское пространство разделено на 4 части Знак Мантиссы Мантисса Знак экспоненты Показатель о
В
Следующие оставшиеся части подразумеваются и, следовательно, не нуждаются в хранении Экспонентное основание Положение точки дроби Там
— это ряд компромиссов, которые необходимо учитывать при проектировании плавающего
формат точки: о Объем памяти Увеличение
точность и дальность Но
также увеличить требования к хранилищу о Основание экспоненты Двоичный
база обеспечивает малую дальность действия, но требует простых вычислений Высшее
база (e.г. hex) обеспечивает высокий диапазон, но приводит к более сложным вычислениям о Расположение двоичной точки Как правило
помещается в начало числа, чтобы обеспечить максимальную точность о Число бит, используемых для экспоненты В
чем выше число, тем выше диапазон и ниже точность, и наоборот о Количество бит, используемых для мантиссы В
чем выше число, тем выше точность и меньше диапазон, и наоборот о Метод обработки знака экспоненты Подписать
требуется бесплатное представительство 2-х
дополнение можно использовать, но чаще встречается избыток N о Способ обработки знака мантиссы Подписать
бесплатное представительство не требуется Знак и величина
обычно используется 2-х
дополнение также можно использовать, но реже о
SEEMMMMM
формат о
Превышение-50 о
База
10 показатель о
База
10 мантисса о
Подразумевается
десятичная точка в начале числа Этот
формат предоставляет такой маленький диапазон, как:.00001 x 10 -50 и больше
как: .99999 x 10 +49 Excess-N Один
важное соображение с плавающей точкой — о
Как
для обработки знака экспоненты о
2-х
дополнение — очевидное решение о
Тем не мение,
метод Excess-N чаще используется N
предопределенное значение, отделяющее положительный диапазон от отрицательного о
Значение
≥ N положительно о
Значение Видеть
Рисунок 5.1 на странице 125 для представления Excess-50 Превышение-N
обеспечивает следующие важные преимущества по сравнению с дополнением 2’s о
Проще
в расчете о
Больше
гибкость, поскольку N можно регулировать для регулировки диапазона положительных и
негативы В
чем меньше N, тем больше положительный диапазон и меньше отрицательный диапазон В
Чем больше N, тем меньше положительный диапазон и больше отрицательный диапазон Вычесть
экспонента из N 1.Преобразуйте 30, представленные в Excess-50, в представление знака и величины = 30 — 50 = -20 2.
Преобразуйте 60, представленное в Excess-50, в представление знака и величины = 60–50 = 10 Добавить
N в показатель степени 1.
Преобразуйте –10, представленное знаком и величиной, в Excess-50 = 50 + (–10) = 40 2.Преобразуйте 0, представленный знаком и величиной, в Excess-50 = 50 + 0
= 50 Нормализация
это процесс удаления ведущих нулей из мантиссы В
цель нормализации — максимизировать точность с учетом количества цифр
ограничение Нормализация
может быть выполнено только в том случае, если показатель степени имеет достаточный диапазон 1.Нормализовать .0003 x 10 20 = 0,3 x 10 17 2.
Нормализовать .0003 x 10 -20 = 0,3 x 10 -23 3.
Нормализовать 0,0003 x 10 -98 , принимая 2 цифры экспоненты В
следующие шаги предоставляют метод преобразования целого или действительного числа в
формат с плавающей запятой: Дано
следующий формат с плавающей запятой о
SEEMMMMM
формат о
Использовать
0 для положительного и 5 для отрицательного о
Превышение-50 о
База
10 показатель о
База
10 мантисса о
Подразумевается
десятичная точка в начале мантиссы Конвертировать
246.8035 в указанный выше формат с плавающей запятой 1. Преобразовать в формат представления экспонент = 246.8035 x 10 0 2. Установите десятичную точку в правильное положение = .2468035 x 10 3 3. Нормализовать уже
нормализованное 4. Преобразовать экспоненту в Excess-N =
50 + 3 = 53 5. Сохранить в формате с плавающей запятой = 05324680 Конвертировать
-.00000075 в указанный выше формат с плавающей запятой 1. Преобразовать в формат представления экспонент = .00000075 x 10 0 2. Установите десятичную точку в правильное положение уже в правильном положении 3. Нормализовать =
0,75 x 10 -6 4.
Преобразовать экспоненту в Excess-N =
50 + (-6) = 44 5.
Сохранить в формате с плавающей запятой =
54475000 Конвертировать
1255 x 10 -3 в указанный выше формат с плавающей запятой 1.Преобразовать в формат представления экспоненты = 1255. x 10 -3 2. Установите десятичную точку в правильное положение = .1255 x 10 1 3. Нормализовать уже
нормализованное 4.
Преобразовать в избыток-N =
50 + 1 = 51 5.
Сохранить в формате с плавающей запятой =
05112550 В
Следующие шаги предоставляют метод преобразования из формата с плавающей запятой в
формат вещественных чисел Предполагать
формат с плавающей запятой SEEMMMMM Конвертировать
05324657 на реальное число 1.Преобразуйте знаковую цифру = + 2. Преобразовать из Excess-N в знак и величину = 53 — 50 = 3 3. Преобразовать в экспоненциальный формат записи =
0,24657 x 10 3 4.
Преобразовать в формат действительных чисел =
246,57 Конвертировать
54810000 к реальному числу 1.Преобразуйте знаковую цифру = — 2. Преобразовать из Excess-N в знак и величину =
48 — 50 = -2 3. Преобразовать в экспоненциальный формат записи =
.10000 х 10 -2 4.
Преобразовать в формат действительных чисел =
— .001 Конвертировать
05112550 на реальное число 1.Преобразуйте знаковую цифру =
+ 2. Преобразование из Excess-N в знак и величину = 51 — 50 = 1 3. Преобразовать в экспоненциальный формат записи =
.12550 x 10 1 4.
Преобразовать в формат действительных чисел =
1,255 Плавающий
точечная арифметика сложнее и дороже, чем целочисленная арифметика Экспонента
и мантисса должны вычисляться отдельно Сложение / вычитание
выполняется по следующей методике Предполагать
формат с плавающей запятой SEEMMMMM 1.Добавить 05199520 + 04967850 1. Совместите второй показатель степени = 0510067850 2. Добавьте мантиссы =
0,99520 + 0,0067850 = 1,0019850 3. Установите десятичную точку =
.10019850 и экспонента = 51 + 1 = 52 4.
Сохранить в формате с плавающей запятой =
05210020 2.
Вычесть 05199520-04967850 1. Совместите второй показатель степени = 0510067850 2.Вычтите мантиссы =
.99520 — .0067850 = .9883250 3. Настройте десятичную точку уже
в правильном положении 4.
Сохранить в формате с плавающей запятой =
05198833 Выравнивание
не требуется при умножении Умножение
выполняется по следующей методике 1.
Умножить
две мантиссы 2.
Добавление
два экспонента — N 3.
Нормализовать
при необходимости 4.
хранить
число в формате с плавающей запятой Предполагать
формат с плавающей запятой SEEMMMMM о
Превышение-50 о
База
10 показатель о
База
10 мантисса о
Подразумевается
десятичная точка в начале числа Умножить
05220000 х 04712500 1.Умножьте 2 мантиссы =
.20000 x .12500 = 0,02500 2. Вычислить экспоненту =
52 + 47 — 50 = 49 2. Нормализовать результат =
0,25000 и отрегулируйте Exponent = 49 — 1 = 48 4. Сохранить в формате с плавающей запятой = 04825000 Выравнивание
не требуется при выполнении деления Деление
выполняется 1.
Делить
две мантиссы 2.
Вычесть
показатель степени первого числа — показатель степени второго числа + N 3.
Место
десятичная точка в правильном положении 4.
хранить
число в формате с плавающей запятой Делить
05275000 05025000 1. Разделите 2 мантиссы =
0,75000 0,25000 = 3.00000 2. Вычислить экспоненту =
52 — 50 + 50 = 52 2. Поместите десятичную запятую в правильное положение = 0,30000 и отрегулируйте экспоненту = 52 + 1 = 53 4. Сохранить в формате с плавающей запятой =
05330000 IEEE
разработал стандарт как для 32-битного, так и для 64-битного представления с плавающей запятой В
стандарт был предназначен для использования в персональных компьютерах (ПК типа IBM и Apple
Macintosh) яблоко
Macintosh также предоставляет собственный 80-битный формат IEEE
754 определяет 32-битный формат, называемый форматом с плавающей запятой одинарной точности Стандарт IEEE 754 с плавающей точкой является наиболее распространенным сегодня представлением вещественных чисел на
компьютеры, включая ПК на базе Intel, Macintosh и большинство платформ Unix.Эта статья дает
краткий обзор плавающей запятой IEEE и ее представления. Обсуждение арифметики
реализацию можно найти в книге, упомянутой в конце этой статьи. Существует несколько способов представления действительных чисел на компьютерах. Фиксированная точка помещает точку счисления
где-то в середине цифр, что эквивалентно использованию целых чисел, представляющих части
какой-то единицы. Например, можно представить 1/100 единицы; если у вас четыре десятичных цифры,
вы могли бы представить 10.82, или 00.01. Другой подход — использовать рациональные числа и представлять каждый
число как отношение двух целых чисел. Представление с плавающей запятой — наиболее распространенное решение — использует научную нотацию для кодирования
числа с базовым числом и показателем степени. Например, 123,456 можно представить как 1,23456 ×
10 2 . В шестнадцатеричном формате число 123.abc может быть представлено как 1,23abc × 16 2 .
В двоичном формате число 10100.110 может быть представлено как 1.0100110 × 2 4 . Плавающая точка решает ряд проблем с представлением. Фиксированная точка имеет фиксированное окно
представление, которое ограничивает его представление как очень больших, так и очень маленьких чисел. Также,
фиксированная точка склонна к потере точности при разделении двух больших чисел. с плавающей точкой, с другой стороны, использует своего рода «скользящее окно» соответствующей точности
к шкале числа. Это позволяет ему представлять числа от 1 000 000 000 000 до
0.0000000000000001 и при максимальной точности (количество цифр) на обоих концах
масштаб. IEEE имеют три основных компонента: знак, показатель степени и
мантисса. Мантисса состоит из дроби и неявной ведущей цифры
(объяснено ниже). База экспоненты (2) является неявной и не требует сохранения. В следующей таблице показана схема для одинарной (32-битной) и двойной (64-битной) точности.
значения с плавающей запятой. Отображается количество бит для каждого поля, а затем диапазоны битов в
квадратных скобок.00 = младший бит. В виде битов числа с плавающей запятой выглядят следующим образом: Знаковый бит настолько прост, насколько это возможно: 0 обозначает положительное число, а 1 обозначает отрицательное
количество.Изменение значения этого бита меняет знак числа. Поле экспоненты должно представлять как положительные, так и отрицательные показатели. Для этого смещение добавляется к фактической экспоненте, чтобы получить сохраненную экспоненту. Для IEEE
одинарной точности с плавающей запятой, это значение равно 127. Таким образом, чтобы выразить экспоненту, равную нулю, 127 сохраняется в
поле экспоненты. Сохраненное значение 200 означает показатель степени (200–127) или 73. По причинам
обсуждается позже, показатели степени −127 (все нули) и +128 (все единицы) зарезервированы для специальных чисел. Двойная точность имеет 11-битное поле экспоненты со смещением 1023. Мантисса , также известная как мантисса , представляет биты точности
числа. Он состоит из неявного ведущего бита (слева от точки счисления) и дроби
биты (справа от точки счисления). Чтобы узнать значение неявного ведущего бита, учтите, что любое число может быть выражено в
научное обозначение разными способами.Например, число 50 можно представить как любое из
эти: Для увеличения количества представимых чисел числа с плавающей запятой обычно
хранится в нормализованной форме . Это в основном ставит точку счисления после первого ненулевого
цифра. В нормализованной форме 50 представлено как 5.000 × 10 1 . Теперь нам доступна небольшая небольшая оптимизация в основе два, поскольку двоичный файл имеет только один
возможная ненулевая цифра: 1.Таким образом, мы можем просто принять начальную цифру 1, и не нужно хранить
это в представлении с плавающей запятой. В результате мы можем принять начальную цифру 1 без
сохраняя его, так что 32-битное значение с плавающей запятой фактически имеет 24 бита мантиссы: 23 явных
дробные биты плюс один неявный начальный бит 1. Итак, подведем итоги: Давайте на секунду рассмотрим поплавки одинарной точности. Мы берем по сути 32-битное число
и переосмысление полей, чтобы охватить гораздо более широкий диапазон. Что-то должно дать, и это
что-то точность. Например, обычные 32-битные целые числа со всей точностью, сосредоточенной вокруг
ноль, может точно хранить целые числа с 32-битным разрешением.С плавающей запятой одинарной точности, на
с другой стороны, не может соответствовать этому разрешению с его 24 битами. Однако это приблизительно
это значение путем эффективного усечения от нижнего конца и округления в большую сторону. Например: Это приблизительно 32-битное значение, но не дает точного представления.С другой
стороны, помимо способности представлять дробные компоненты (которых целые числа полностью отсутствуют),
значение с плавающей запятой может представлять числа около 2 127 по сравнению с 32-битными целыми числами ‘
максимальное значение около 2 32 . Диапазон положительных чисел с плавающей запятой можно разделить на нормализованные числа (которые
сохранить полную точность мантиссы), и денормализованных чисел (которые предполагают
ведущая цифра 0, обсуждается позже), которые используют только часть точности дробей. Поскольку каждое число с плавающей запятой имеет соответствующее отрицательное значение (путем переключения знакового бита),
диапазоны выше симметричны относительно нуля. Существует пять различных числовых диапазонов, в которых используются числа с плавающей запятой одинарной точности. не может представить с представленной схемой: Переполнение означает, что значения стали слишком большими для представления, примерно так же
что вы можете переполнять целые числа.Недополнение — менее серьезная проблема, потому что это просто означает потерю
точности, которая гарантированно приближается к нулю. Вот таблица полного эффективного диапазона конечных чисел с плавающей запятой IEEE: Обратите внимание, что экстремальные значения возникают (независимо от знака), когда показатель степени максимален
значение для конечных чисел (2 127 для одинарной точности, 2 1023 для двойной точности) и
мантисса заполняется единицами (включая нормализующий бит 1). IEEE резервирует значения поля экспоненты, состоящие из всех нулей и всех единиц, для обозначения специальных значений в
схема с плавающей запятой. Если показатель степени равен 0, то значение представляет собой денормализованное число , которое теперь
имеет предполагаемое начало 0 перед двоичной точкой. Таким образом, это представляет собой число
(−1) с × 0. f × 2 −126 , где с —
знаковый бит и f — дробь. Для двойной точности денормализованные числа имеют
форма (−1) с × 0. f × 2 −1022 . По мере уменьшения денормализованных чисел они постепенно теряют точность, поскольку левые биты
дробь становится нулем. При наименьшем ненулевом денормализованном значении (только наименее значимое
дробный бит равен единице), 32-битное число с плавающей запятой имеет только один бит точности,
по сравнению со стандартными 24-битными нормализованными значениями. Значение NaN ( Not a Number ) используется для представления значения
это не является действительным числом. NaN представлены битовым шаблоном с показателем степени
всех единиц и ненулевой дроби. Существует две категории NaN: QNaN.
( Quiet NaN ) и SNaN ( Signaling NaN ). QNaN — это NaN с установленным битом старшей дроби. QNaN распространяются свободно
через большинство арифметических операций.Эти значения создаются в результате операции, когда
результат математически не определен. SNaN — это NaN с очищенным битом старшей дроби. Его можно использовать для обозначения
исключение при использовании в операциях. SNaN могут быть удобны для назначения неинициализированных переменных в
ловушка преждевременного использования. Семантически, QNaN обозначают неопределенных операций, тогда как SNaN обозначают недействительных операций. Операции со специальными номерами четко определены IEEE.В простейшем случае любая операция с
NaN дает результат NaN. Другие операции следующие: Подводя итог, следующие значения являются соответствующими значениями для данного представления: Многие из этих вещей наблюдались в небольших программах, которые я написал для перехода между шестнадцатеричными числами.
и с плавающей точкой ( printf, -стиль), а также для проверки результатов различных операций.Масса
Однако этот материал был взят из книги Столлингса. Глава 5 — Числа с плавающей запятой
Обзор экспоненциальной записи
Примеры
Число -50.5 х
10 -20 можно представить как
-505. х 10 -21
-.505 x 10 -18
-.000505 х 10 -15
Представление с плавающей запятой в компьютерах
Обзор представления с плавающей запятой
Пример формата с плавающей запятой
Преобразование из Excess – N в
Знак и величина
Примеры
Преобразование знака и величины
к франшизе – N
Примеры
Нормализация и форматирование чисел с плавающей запятой
Примеры
Преобразование действительного числа в формат с плавающей запятой
Примеры
Преобразование из формата с плавающей запятой в действительное число
Примеры
Расчет с плавающей запятой
Сложение и вычитание
Примеры
Умножение
Примеры
Дивизион
Примеры
Стандарт с плавающей запятой IEEE 754
Стандарт IEEE 754 с плавающей запятой
Стандарт IEEE 754 с плавающей запятой Что такое числа с плавающей запятой?
Схема хранения
Числа с плавающей запятой Знак Показатель Фракция одинарной точности 1 [31] 8 [30–23] 23 [22–00] Двойная точность 1 [63] 11 [62–52] 52 [51–00]
Сингл: SEEEEEEE EFFFFFFF FFFFFFFF FFFFFFFF
Двойной: SEEEEEEE EEEEFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
Знаковый бит
Показатель
Мантисса
0,050 × 10 3
.5000 × 10 2
5.000 × 10 1
50,00 × 10 0
5000. × 10 −2
Собираем все вместе
Диапазоны чисел с плавающей запятой
11110000 11001100 10101010 10101111 // 32-битное целое число
= +1.1110000 11001100 10101011 x 2 31 // Поплавок одинарной точности
= 11110000 11001100 10101011 00000000 // Фактическое значение с плавающей запятой
денормализованный Нормализованное Приблизительное десятичное значение одинарной точности ± 2 −149 до (1-2 −23 ) × 2 −126 ± 2 −126 до (2−2 −23 ) × 2 127 ± ≈10 −44,85 от до ≈10 38,53 Двойная точность ± 2 −1074 до (1-2 −52 ) × 2 −1022 ± 2 −1022 до (2−2 −52 ) × 2 1023 ± ≈10 −323.От 3 до ≈10 308,3 двоичный Десятичный Одиночный ± (2−2 −23 ) × 2 127 ≈ ± 10 38.53 Двойной ± (2−2 −52 ) × 2 1023 ≈ ± 10 308,25 Особые значения
Специальные операции
Эксплуатация Результат н ÷ ± ∞ 0 ± ∞ × ± ∞ ± ∞ ± ненулевое значение ÷ ± 0 ± ∞ ± конечное × ± ∞ ± ∞ ∞ + ∞
∞ — −∞ + ∞ −∞ — ∞
−∞ + −∞ −∞ ∞ — ∞
−∞ + ∞ NaN ± 0 ÷ ± 0 NaN ± ∞ ÷ ± ∞ NaN ± ∞ × 0 NaN NaN == NaN ложный Резюме
Знак Показатель ( e ) Фракция ( f ) Значение 0 00 00 00 00 +0 0 00 00 00 ⋯ 01
& vellip;
11 ⋯ 11 Положительное денормализованное вещественное значение
0. f × 2 (- b +1) 0 00 ⋯ 01
& vellip;
11 ⋯ 10 XX ⋯ XX Положительное нормализованное Действительное значение
1. f × 2 ( e — b ) 0 11 11 00 00 + ∞ 0 11 11 00 ⋯ 01
& vellip;
01 11 СНАН 0 11 11 1X ⋯ XX QNaN 1 00 00 00 00 -0 1 00 00 00 ⋯ 01
& vellip;
11 ⋯ 11 Отрицательное денормализованное вещественное число
−0. f × 2 (- b +1) 1 00 ⋯ 01
& vellip;
11 ⋯ 10 XX ⋯ XX Отрицательное нормализованное вещественное число
−1. f × 2 ( e — b ) 1 11 11 00 00 −∞ 1 11 11 00 ⋯ 01
& vellip;
01 11 СНАН 1 11 11 1X ⋯ XX QNaN Ссылки
См. Также
.