Внутреннее представление базовых типов в оперативной памяти — КиберПедия 

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

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Внутреннее представление базовых типов в оперативной памяти

2021-04-18 155
Внутреннее представление базовых типов в оперативной памяти 0.00 из 5.00 0 оценок
Заказать работу

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

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

· с фиксированной точкой (в русском переводе иногда употребляют термин "с фиксированной запятой", т. к. речь идет о разделителе, отделяющем целую часть числа от дробной части);

· с плавающей точкой (запятой).

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

В представлении с фиксированной точкой целое число хранится в двоичной системе счисления, занимая столько байт памяти, сколько определено в конкретном компиляторе для его типа.

Например:

целое число 19 в двоичной форме с фиксированной точкой будет записано как 10011 (разложение по степеням двойки: 19=1×24+0×23+0×22+1×21+1×20). Один крайний бит отводится под знак числа (для положительного числа 0, для отрицательного 1), остальные незанятые биты заполняются нулями.

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

Например: вещественное число 15,375 в двоичной форме с плавающей запятой можно представить как 1,111011×211, где 1,111011 — мантисса, 11 — порядок (запись в двоичной форме).

В ячейке памяти, отводимой под число с плавающей точкой, находится два значения — мантисса и порядок.

Рассмотрим следствия, которые вытекают из рассмотренных способов хранения данных.

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

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

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

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

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

q Следует быть осторожным при выполнении операций между числами, порядки которых сильно отличаются, например, между очень большими и очень маленькими числами. Возможны ситуации, когда мантисса не сможет обеспечить требуемую точность. Например, при сложении чисел 10000000 и 0.00000001 типа float языка C разрядности мантиссы не хватит, чтобы представить число 10000000.00000001, и результат останется равным 10000000.

Замечание

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


Поделиться с друзьями:

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.