Что такое вещественное число с фиксированной точкой

Арифметика fixed-point на C++

Сегодня расскажу Вам что такое fixed-point, зачем он нужен и как его можно использовать.

Существует такая проблема когда производительность приложения может заметно ухудшиться из-за особенностей вычисления на числах с плавающей точкой. Как правило CPU заточен под целочисленные операции, а сопроцессор FPU (floating point unit) в нем работает на порядке медленнее. Существую такие платформы где вообще отсутствует FPU и эмулирование операций с числами занимало бы много времени. Например, при наличии FPU, умножение чисел с плавающей точкой выполняется всего одной командой fmul, а при отсутствии FPU, умножение выполняется эмулирующей функцией __mulsf3. По сравнению с командой fmul, функция __mulsf3 эмулирует операции над числами с плавающей точкой, при этом вычисления производятся в целочисленном виде, что приводит к увеличению машинного кода и времени на его выполнение, в то время как команда fmul выполнит эту операцию быстро, с использованием аппаратных средств.

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

Принцип данного типа заключается в фиксированном сдвиге числа на N бит, в результате чего дробное число можно представить целым и оно будет иметь точность 2^N после точки. Пример преобразования числа с плавающей точкой в число с фиксированной точкой порядка 8 бит (2^8 = 1024).

Вот пример перевода числа с плавающей точкой в число с фиксированной точкой:

Данное число, после точки, имеет точность 2^8 после запятой.

Пример обратного перевода числа с фиксированной точкой в число с плавающей точкой.

В данном случае число после обратного перевода имеет вид 12345,6787109375 и является точным в 3 знака после точки, максимальная точность на самом деле равна 2^8 = 1024.

Как происходят вычисления на типе с фиксированной точкой?

Операции суммы и разности эквивалентны обычным целочисленным операциям.

Переполнение

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

Источник

Представление чисел с фиксированной и плавающей запятой

Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой

Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой

Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой

В вычислительных машинах применяются две формы представления двоичных чисел:

· естественная форма или форма с фиксированной запятой(точкой);

· нормальная форма или форма с плавающей запятой(точкой).

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

Например: в десятичной системе счисления имеется 5 разрядов в целой части чи­сла (до запятой) и 5 разрядов в дробной части числа (после запятой); числа, запи­санные в такую разрядную сетку, имеют вид:

Эта форма наиболее проста, естественна, но имеет небольшой диапазон пред­ставления чисел и поэтому чаще всего не приемлема при вычислениях. Диапа­зон значащих чисел n всистеме счисления с основанием Р при наличии т раз­рядов в целой части и s разрядов в дробной части числа (без учета знака числа) будет:

Например, при Р = 2, т = 10 и s = 6 числа изменяются в диапазоне:

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

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

Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой.

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

Выполнение операций над числами с плавающей запятой

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

При умножениичисел с плавающей запятой их мантиссы перемножаются, а по­рядки складываются.

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

Источник

Русские Блоги

Разговор о принципах компьютерной композиции (9) Числа с фиксированной точкой и работа с числами с фиксированной точкой

О чем эта статья?

В компьютере десятичная точка не представляется специальным устройством, а сохраняется в регистровом блоке согласованным способом. Арифметико-логический блок (ALU) является неотъемлемой частью ЦП, отвечающей за арифметические и логические операции. Итак, как работает ALU?
В этой статье в основном обсуждается следующее:

Что такое фиксированная точка?

В буквальном смысле «число с фиксированной точкой» означает, что «точка» не перемещается. Так какой же «смысл» не двигаться? Правильно, это «десятичная точка».
В прошлой лекции мы сказали, что десятичная точка есть, будь то целое или десятичное число.Десятичная точка целого числа указывается после последней цифры, а десятичная точка десятичного числа указывается после знака истинного значения.как показано на картинке:
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой

В дополнение к числам с фиксированной запятой существует еще один вид чисел, называемый «числами с плавающей запятой». Числа с плавающей запятой будут представлены в следующей лекции.

Операции с фиксированной точкой

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

Расчет смещения фиксированной точки

Не смотрите на простую операцию сдвига, но ее положение в расчетах компьютера очень важно. Без операции сдвига нет последующего умножения и деления.Умножение и деление реализуются при взаимодействии операций сдвига и операций сложения и вычитания.
Правила сменной работы:Хотя правила операции сдвига для положительных и отрицательных чисел различны, одно и то же состоит в том, что знаки положительных и отрицательных чисел остаются неизменными после сдвига. Тогда правило становитсяВо время операции сдвига знаковый бит не перемещается, а бит значения сдвигается в соответствии со следующими правилами.
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой
например:

Сдвинуть исходный код, дополнительный и обратный код +26 влево на один бит
Результат: [26]оригинал = [26]анти- = [26]Составить = 0,0011010, по правилам результат сдвига исходного кода, одного дополнения и одного дополнения влево: 0,010100

Операция смены очень проста? Просто соблюдайте правила. Основное внимание уделяется следующим операциям.

Сложение и вычитание чисел с фиксированной точкой

Сложить и вычесть числа с фиксированной запятой нужно только помнить один принцип:Сложение добавляется напрямую, а вычитание становится сложением перед вычислением.
Что это значит? Например [A + B]Составить = [A+B]Составить,[A-B]Составить = [A]Составить + [-B]Составить
Посмотрите на два примера:

Умножение с фиксированной точкой

Для формирования метода операции умножения рекомендую взглянуть на учебник по информатике, а именно «Принципы компьютерной композиции» Тан Шуофея. Эта статья написана с точки зрения практичности и не будет чрезмерно исследовать процесс вывода метода расчета, потому что мое объяснение не так хорошо, как в учебнике. Что касается реального расчета, то его нельзя назвать лучше учебника. По крайней мере, вы можете быстро приступить к расчету. Если вы сделаете это, то моя цель будет достигнута.
Метод расчета умножения с фиксированной точкой:

Двузначное умножение исходного кода: Двухзначное умножение исходного кода имеет арифметические правила, которые похожи на однобитовое умножение, но не то же самое.Двухзначное умножение исходного кода использует двузначную часть умножителя, чтобы определить, как формируется новая часть. Два двоичных числа имеют четыре формы: 00, 01, 10, 11, которые могут представлять различные методы сдвига и методы сложения (см. Ниже). В сочетании с битом флага C можно выполнять более сложные операции. как показано на картинке:
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой
С помощью приведенных выше правил мы можем легко произвести двузначное умножение исходного кода на основе однозначного умножения исходного кода.Процесс вычисления: инициализируйте частичный продукт равным 0, запишите множитель, и положение флага равно 0. Определите соотношение между двумя последними цифрами множителя и битом флага, вызовите соответствующий метод для сдвига и установки бита флага, и окончательный результат будет справа Переместите два бита и определите знак согласно исключающему ИЛИ знаков x и y. Необходимо отметить, что для двузначного умножения необходимо зарезервировать три знаковых бита.Приведите пример:

Умножение с дополнительным кодом: Однобитовое умножение с одним дополнением похоже на исходное однобитовое умножение, разница в том, что,Когда множитель положительный, метод операции умножения с одним дополнением такой же, как и при исходном однобитовом умножении; когда множитель отрицательный, первая половина однобитового умножения с одним дополнением также совпадает с однобитовым умножением исходного кода. После завершения операции нужно добавить к окончательному результату [-x]СоставитьЕго можно использовать для проверки, чтобы получить окончательный результат. Происхождение этой части также можно найти в учебниках.Ниже приведен пример:

Сравнение дополнительного кода: я считаю, что с предыдущим основанием вы можете решить проблему, указав правила напрямую.Работа правил сравнения дополнительного кода следующие:
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой
Приведите пример: [x]Составить = 0.1101,[y]Составить = 0,1011. Процесс расчета выглядит следующим образом:
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой

Двузначное умножение с двумя дополнительными цифрами: нет большой разницы между двузначным умножением с двумя дополнительными числами и описанным выше методом. Главное, что при двузначном умножении используются три знаковых бита и три оценочных бита (бит множителя). С правилами работы сделайте Тема слишком проста.
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой
Пример: [x]Составить=0.0101,[y]Составить= 1.0101, найти [x * y]Составить
Что такое вещественное число с фиксированной точкой. Смотреть фото Что такое вещественное число с фиксированной точкой. Смотреть картинку Что такое вещественное число с фиксированной точкой. Картинка про Что такое вещественное число с фиксированной точкой. Фото Что такое вещественное число с фиксированной точкой

Деление с фиксированной точкой

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

Заключение

Если вам понравилась моя статья, подпишитесь на мой публичный аккаунт WeChat «Битовый поток с наивысшими привилегиями«В настоящее время!

[Ссылки] «Принципы компьютерной организации», Тан Шуофэй.

Источник

Числа в форме с фиксированной точкой

Типы и форматы операндов

Машинные команды оперируют данными, которые принято назы­вать операндами. К наиболее общим (базовым) типам операндов можно отнести:

Для каждого типа данных в компьютере предусмотрены опреде­ленные форматы.

Числовая информация

Среди цифровых данных можно выделить две группы:

— целые типы, используемые для представления целых чисел;

— вещественные типы для представления рациональных чисел.

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

Числа в форме с фиксированной точкой

Представление числа X в форме с фиксированной точкой (ФТ), которую иногда называют также естественной формой, включает в себя знак числа и его модуль в q-ичном коде. Здесь q — основание системы счисления или база. Для современных компьютеров характерна двоичная система (q=2), но существовали также восьмерич­ная (q=8) или шестнадцатеричная (q=16) системы счисления. Знак положительного числа кодируется двоичной цифрой 0, а знак отрицательно­го числа — цифрой 1.

Числам с фиксированной точкой соответствует запись вида X = ±an-1…a0a-1a-2…ar. Отрицатель­ные числа обычно представляются в дополнительном коде. Разряд кода числа, в ко­тором размещается знак, называется знаковым разрядом кода. Разряды, где располагаются значащие цифры числа, называются цифровыми разрядами кода. Знаковый разряд размещается левее старшего цифрового разряда. Положение точки оди­наково для всех чисел и в процессе решения задачи не меняется. Хотя точка и фик­сируется, в коде числа она никак не выделяется, а только подразумевается.

В об­щем случае разрядная сетка для размещения чисел в форме с фиксированной точкой имеет вид, представленный на рис. 14.1, где k разрядов используются для записи целой части числа и r разрядов — для дробной части.

Рис. 14.1. Формат представления чисел с фиксированной точкой

Если число является смешанным (содержит целую и дробную части), оно обрабатываются как целое, хотя и не является таковым (в этом случае применяют тер­мин масштабируемое целое). Обработка смешанных чисел в компьютерах встречается крайне редко. Как правило, используются компьютеры с дробной (n = 0) либо целочисленной (r=0) арифметикой.

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

При фиксации точки после младшего разряда представимы лишь целые чис­ла. Это наиболее распространенный способ, поэтому в дальнейшем понятие чисел в формате с фиксированной точкой будет связываться исключительно с целыми числами, а операции с числами в формате с фиксированной точкой будут характеризоваться как целочисленные. Форматы целых чисел со знаком и без знака представлены на рис. 14.2 и 14.3.

Рис. 14.2. Представление целых чисел без знака в формате с фиксированной точкой

Рис. 14.3. Представление целых чисел со знаком в формате с фиксированной точкой

Целые числа применяются также для работы с адресами. Адреса обрабатываются как целые числа без знака.

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

Дата добавления: 2015-09-28 ; просмотров: 464 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

Источник

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

СОДЕРЖАНИЕ

Представление

Представление с фиксированной точкой с масштабированием 1/100

Представленная ценностьВнутреннее
представительство
0,000
0,550
0,9999
2200
−14,1−1410
314,16031416

Выбор масштабных коэффициентов

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

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

Параметры некоторых 16-битных двоичных форматов с фиксированной точкой со знаком

жSδV минV макс.
−31/2 −3 = 84— 262 144+ 262 143
01/2 0 = 10,5— 32 768+ 32 767
51/2 5 = 1/32000 00+1023. 968 75
141/2 14 = 1/16 384000 031−2. 000 000 000 000 00+1. 999 938 964 843 75
151/2 15 = 1/32 768000 016−1. 000 000 000 000 000+0. 999 969 482 421 875
161/2 16 = 1/65 536000 008−0. 500 000 000 000 000 0+0. 499 984 741 210 937 5
201/2 20 = 1/1 048 576000 000 5−0. 031 250 000 000 000 000 00+0. 031 249 046 325 683 593 75

Точные значения

Сравнение с плавающей точкой

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

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

Приложения

Операции

Сложение и вычитание

Умножение

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

Разделение

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

Например, деление 3456, масштабированного на 1/100 (34,56), и 1234, масштабированного на 1/1000 (1,234), дает целое число 3456 ÷ 1234 = 3 (округлено) с коэффициентом масштабирования (1/100) / (1/1000) = 10, то есть 30. В качестве другого примера, деление первого числа на 155, неявно масштабированное на 1/32 (155/32 = 4,84375), дает целое число 3456 ÷ 155 = 22 (округлено) с неявным коэффициентом масштабирования (1 / 100) / (1/32) = 32/100 = 8/25, то есть 22 × 32/100 = 7,04.

Если результат не точен, ошибку, вносимую округлением, можно уменьшить или даже устранить путем преобразования делимого в меньший коэффициент масштабирования. Например, если r = 1,23 представлено как 123 с масштабированием 1/100, а s = 6,25 представлено как 6250 с масштабированием 1/1000, то простое деление целых чисел дает 123 ÷ 6250 = 0 (округлено) с коэффициентом масштабирования ( 1/100) / (1/1000) = 10. Если r сначала преобразовать в 1,230,000 с коэффициентом масштабирования 1/1000000, результат будет 1,230,000 ÷ 6250 = 197 (округлено) с коэффициентом масштабирования 1/1000 (0,197). Точное значение 1,23 / 6,25 составляет 0,1968.

Масштабирование преобразования

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

Например, если общий коэффициент масштабирования равен 1/100, умножение 1,23 на 0,25 влечет за собой умножение 123 на 25, чтобы получить 3075 с промежуточным коэффициентом масштабирования 1/10000. Чтобы вернуться к исходному коэффициенту масштабирования 1/100, целое число 3075 затем нужно умножить на 1/100, то есть разделить на 100, чтобы получить либо 31 (0,31), либо 30 (0,30), в зависимости от политики округления. использовал.

Преобразование в числа с плавающей точкой и обратно

Аппаратная поддержка

Масштабирование и перенормировка

Ранние компьютеры, такие как IBM 1620 и Burroughs B3500, использовали двоично-десятичное представление (BCD) для целых чисел, а именно основание 10, где каждая десятичная цифра независимо кодировалась 4 битами. Некоторые процессоры, например микроконтроллеры, все еще могут его использовать. В таких машинах преобразование десятичных коэффициентов масштабирования может выполняться битовыми сдвигами и / или манипулированием адресами памяти.

Переполнение

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

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

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

Компьютерная языковая поддержка

С другой стороны, все реляционные базы данных и нотация SQL поддерживают десятичную арифметику с фиксированной точкой и хранение чисел. PostgreSQL имеет специальный числовой тип для точного хранения чисел до 1000 цифр.

Более того, в 2008 году Международная организация по стандартизации (ISO) выпустила предложение о расширении языка программирования C с помощью типов данных с фиксированной точкой в ​​интересах программ, работающих на встроенных процессорах. Кроме того, коллекция компиляторов GNU (GCC) имеет внутреннюю поддержку фиксированной точки.

Подробные примеры

Десятичное умножение с фиксированной запятой

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

(10,500) (1,050) = 1 * 10,500 + 0,050 * 10,500 = 10,500 + 0,525000 = 11,025000

Таким образом, наше умножение становится

Это округляется до 11,023 с тремя цифрами после десятичной точки.

Двоичное умножение с фиксированной точкой

Для более сложного примера предположим, что два числа 1.2 и 5.6 представлены в 32-битном формате с фиксированной точкой с 30 и 20 дробными битами соответственно. Масштабирование на 2 30 и 2 20 дает 1 288 490 188,8 и 5 872 025,6, округляя до 1 288 490 189 и 5 872 026 соответственно. Оба числа по-прежнему помещаются в 32-битную целочисленную переменную со знаком и представляют собой дроби.

1. 200 000 000 186 264 514 923 095 703 125 и 5. 600 000 381 469 726 562 50

6. 720 000 458 806 753 229 623 609 513 510

Обозначения

Для краткого определения параметров формата с фиксированной точкой использовались различные обозначения. В следующем списке f представляет количество дробных битов, m количество величин или целочисленных битов, s количество знаковых битов и b общее количество битов.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *