Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на ЯП.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
661.54 Кб
Скачать

Операции над целыми числами

Основные: сложение, вычитание, умножение, деление.

Приоритеты – как и в математике

Получаемые значения ограничены диапазоном типа данных

# char a,b,c; a=200; b=56; c=a+b;// с будет равно единице

• Переполнение - полученное значение выходит за границы допустимого диапазона данных.

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

Стоит опасаться действий оптимизатора:

с=a-100+b; всё ок

c=a+b-100; оптимизатор преобразует вот так и будет переполнение

• Операция умножения требует большего времени выполнения на процессоре.

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

• Операция деления разделена на

1. Получение целой части(/div)

2. Получение остатка от деления (%mod). Требует самого большого числа тактов.

Вещественные числа

10,11 в двоичной = 2,75 в 10(1*2^1+ 0*2^0…)

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

Два подхода:

1. Согласно двоичной арифметике – двоично-кодированные десятичные числа.

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

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

Формат числа с фиксированной точкой определяет, что вещественное число содержит не более заданного количества цифр N целой части и не более некоторого заданного количества M цифр запятой, итого N+M.

Достаточно сохранить его целочисленное представление (включая 1 бит знака) и номер позиции десятичной точки.

+Количество знаков после запятой определяет абсолютную погрешность.

-Относительная погрешность переменная.

-Некоторые числа нельзя вписать в формат.

Применяется, когда точность заранее определена: денежные операции, показания приборов.

Числа с плавающей точкой(float)

Вещественные число в интервале [0;1].

Количество возможных цифр в целой части фиксируется.

Т.к. мантисса всегда меньше 1, то позиции точки хранить не надо.

+Кол-во знаков мантиссы определяет относительную погрешность.

+Очень широкий диапазон чисел, низкая относительная погрешность.

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

• Переполнение – порядок выше верхней границы диапазона.

• Потеря значимости – порядок меньше нижней границы диапазона.

Умножение и деление

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

• Деление. Нужно разделить мантиссу делимого на мантиссу делителя и вычесть из порядка делимого порядок делителя. Затем точно так же округлить мантиссу результата и привести его к нормализованной форме.

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

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