предст_чисел в компьютере 10 кл.pptx
- Количество слайдов: 71
Компьютерная арифметика Кодирование информации 10 класс
Арифметика целых чисел Представление целых чисел в компьютере
Представление целых положительных чисел Простейшими числовыми типами данных являются целые числа. Поскольку любое целое число является и вещественным, но с нулевой дробной частью, можно было использовать для любых вычислений только вещественные числа. Однако, в целях: эффективного расходования памяти; повышения быстродействия; введения операции деления нацело с остатком вместо приводящего к потере точности обычного деления вещественных чисел. Целые числа представляются с помощью специально для них предназначенных целых типов.
Представление целых положительных чисел Большинство задач, решаемых на компьютере сводится к операциям над целыми числами. Для компьютерного представления целых чисел используется несколько различных типов данных, отличающихся друг от друга количеством разрядов и наличием или отсутствием знакового разряда. Чаще всего используется восьми-, шестнадцати- и тридцатидвухразрядное представление чисел (один, два и четыре байта соответственно).
чисел в беззнаковых целых типах Все разряды в таких типах отводятся для записи двоичного представления целого положительного числа (левый бит для старшего разряда, а правый для младшего). Диапазон допустимых значений однозначно определяется количеством разрядов. Пусть число записывается в ячейку из k разрядов. Тогда минимальное число, которое можно записать в k разрядах будет состоять из k нулей, т. е. это число 0. Максимальное число будет состоять из k единиц. Это число в десятичной системе счисления равно 2 k-1 + 2 k-2 + … +22 +2 + 1 = (2 k-1× 2 – 1)/(2 -1) = 2 k-1 (формула суммы геометрической прогрессии)
Представление положительных чисел в беззнаковых целых типах byte 8 7 6 5 4 3 2 1 11112=28 -1=255 word 16 15 14 13 12 11 10 9 8 7 6 5 4 3 111111112=216 -1=65535 2 1
чисел в беззнаковых целых типах Таким образом, для беззнаковых типов нижняя граница диапазона всегда равна нулю, а верхняя граница зависит от количества разрядов, используемых в представлении числа данного типа. В Turbo-Pascal: кол-во бит максимальное значение название 8 255 (28 -1) byte 16 65535 (216 -1) word 32 4294967295 (232 -1) тип отсутствует
Представление положительных чисел в знаковых целых типах В знаковых целых типах старший разряд отводится под кодирование знака: 0 – «+» , 1 – «−» . Остальные разряды остаются для кодирования числа. Представление числа в привычной форме «знак» - «величина» , при котором старший разряд ячейки отводится под знак, а остальные разряды ячейки под запись числа, называется прямым кодом. зн k k-1 3 2 1 Максимальное число = 2 k-1 -1 (в два раза меньше) k=8 (один байт) 27 -1=127 k=16 (два байта) 215 -1= 32767
Представление положительных чисел в знаковых целых типах Алгоритм представления целых положительных чисел: 1. целое положительное число, входящее в диапазон допустимых значений того или иного типа, переводится в двоичную систему счисления; 2. двоичное число дополняется, если это необходимо, слева нулями до соответствующего числа разрядов (8 -ми, 16 -ти, 32 -х или более); 3. полученное число записывается в этом числе разрядов так, что в самом левом разряде размещается самая старшая цифра, а в правом – младшая.
Представление положительных чисел в знаковых целых типах Пример 1 5310 = 1101012 8 -разрядное представление 0 0 1 16 -разрядное представление 0 0 0 0 0 1 1 0 1 Пример 2 20010=110010002 Представление в 8 -разрядном знаковом типе невозможно.
Представление целых отрицательных чисел Очевидно, что отрицательные целые числа представимы лишь в знаковых типах данных. Отрицательные числа представляются дополнительным кодом. Положительные числа всегда записываются с помощью прямого кода. Дополнительный код отрицательного числа m – это запись в k разрядах положительного числа 2 k-|m|, где |m| – модуль отрицательного числа. Дополнительный код положительного числа равен прямому коду положительного числа. В k-разрядной арифметике 2 k=0, поэтому дополнительный код – это дополнение |m| до 2 k или, в k-разрядной арифметике, до нуля (2 k- |m|+ |m|=0). Поэтому он называется дополнительным.
Представление целых отрицательных чисел Алгоритм получения дополнительного кода Для получения дополнительного k-разрядного кода отрицательного числа необходимо: 1. модуль числа представить прямым кодом в k двоичных разрядах; 2. значение всех бит инвертировать (все нули заменяются на единицы, а единицы на нули), таким образом получается k-разрядный обратный код исходного числа; 3. к полученному обратному коду, трактуемому как k -разрядное неотрицательное двоичное число, прибавить единицу.
Представление целых отрицательных чисел Пример Получим дополнительный код числа -11710 для 8 - и 16 -разрядной ячейки. Для 8 -разрядной ячейки прямой код 0111 01012 обратный код 1000 10102 дополнительный код 1000 10112 Для 16 -разрядной ячейки прямой код обратный код дополнительный код 0000 0111 01012 1111 1000 10102 1111 1000 10112
Представление целых отрицательных чисел Примеры число прямой код обратный код дополнительный код -128 10000000 01111111 -127 01111111 10000000 -0 0000 1111 10000000 10000001 0000 В k-разрядной целочисленной арифметике 2 k =0
Представление целых отрицательных чисел Алгоритм получения десятичного числа по его дополнительному коду Для получения исходного числа по его дополнительному коду необходимо: 1. из дополнительного кода вычесть единицу (в результате получим обратный код); 2. инвертировать полученный код (все нули заменить на единицы, единицы − на нули), получим модуль отрицательного числа; 3. перевести полученное значение в десятичную систему и перед полученной записью поставить знак «минус» .
Представление целых отрицательных чисел Пример Получим десятичное значение числа по его дополнительному коду 100101112. 1) из дополнительного кода вычтем единицу _ 1001 0111 1 10010110 (получили обратный код) 2) инвертируем полученный код: 01101001 (получили модуль отрицательного числа) 3) переведем полученное значение в десятичную систему: 011010012=26+25+23+1=64+32+8+1=10510 7 6 5 4 3 2 1 0 Ответ: -105
Знаковые типы данных Целые числа со знаком для k-разрядных типов принадлежат диапазону [-2 k-1, 2 k-1 -1]. разрядность минимум максимум 8 16 32 -128 -32768 -2147483648 127 32767 2147483647 Для Delphi разрядность 32 64 название (Turbo Pascal) shortint integer longint название integer int 64
Организация арифметических действий в ограниченном числе разрядов
Прибавление и вычитание единицы Наглядным представлением любого целого типа данных является: 1 0 255 8 -битный беззнаковый 1 0 65535 32768 16 -битный беззнаковый 1 0 -1 32767 -32768 16 -битный знаковый Результатом прибавления единицы в арифметике с фиксированным числом разрядов является следующее по часовой стрелке за исходным число в кольце, а результатом вычитания единицы – следующее число по ходу против часовой стрелки.
Прибавление и вычитание единицы Беззнаковые типы Максимальное число равно 2 k-1 и состоит из k единиц. При прибавлении к нему единицы получаем 2 k, что соответствует нулю в k-разрядной арифметике. Знаковые типы Вычитание из нуля единицы соответствует прибавлению к нулю минус единицы. По правилам k-разрядной арифметики минус единица − это дополнение единицы до 2 k, т. е. число, которое при сложении с единицей даст 2 k. Очевидно, это число 2 k-1, состоящее из k двоичных единиц. Значит, 0+(-1)=2 k-1, что равно максимальному значению в типе.
Прибавление и вычитание единицы Фактически, операции сложения, вычитания и умножения в k-битных беззнаковых типах соответствует математическому понятию арифметические операции по модулю 2 k (сравнение по модулю 2 k).
Прибавление и вычитание произвольного числа n соответствует n единичным шагам вдоль кольца от исходного числа в нужном направлении. Примеры 1 32767 1 8 -разрядный беззнаковый тип 0 0 -32768 255 -1 254+4=2 200− 255=201 16 -разрядный знаковый тип 32760+10= − 32766 − 32760 − 10=32766 Вычитание можно заменить на сложение с отрицательным числом, представляя последнее в дополнительном коде.
Прибавление и вычитание произвольного числа 254 11111110 200 11001000 4 00000100 − 255 00000001 254+4 1|00000010 200− 255 11001001 результат 201
Ошибки При выполнении арифметических действий в целочисленной kразрядной арифметике возможно возникновение следующих ошибок: левые цифры результата, выходящие за отведенное количество разрядов, оказываются утерянными; при сложении двух положительных чисел, представленных в знаковом типе данных, можно получить отрицательное число, если в результате сложения в левом знаковом разряде окажется единица. Пример Выполним 100+51 в 8 -разрядном знаковом типе. 100=011001002 и 51=00112. При сложении получим 100101112. Получим отрицательное число в дополнительном коде. Тогда исходное число будет − 105. Таким образом, получим 100+51=− 105 в 8 -разрядной знаковой арифметике.
Упражнение Даны десятичные числа a=61 и b=105. Найти их сумму и разность в 8 -разрядном беззнаковом и знаковом представлении. Решение 6110=1111012 8 -разрядный знаковый тип a+b + 00111101 01101001 дополнительный код - 10100110 1 10100101 обратный код 11011010 прямой код 10510=11010012 Переведем результат в десятичную систему 010110102= 26+24+23+21=9010 Ответ: − 90
Упражнение 6110=1111012 10510=11010012 a−b = a + (-b) Получим дополнительный код числа −b: 01101001 прямой код 10010110 обратный код 10010111 дополнительный код Сложим число a с дополнительным кодом числа b 10010111 + 001111010100 дополнительный код 1 11010011 обратный код 00101100 прямой код Переведем результат в десятичную систему 001011002 = Ответ: − 44 25+23+22 = 4410
Упражнение 6110=1111012 10510=11010012 8 -разрядный беззнаковый тип a+b + 00111101 0110100110 Переведем результат в десятичную систему 101001102= 27+25+22+21=16610 Ответ: 166
Упражнение 6110=1111012 10510=11010012 a−b Получим дополнительный код числа −b: 01101001 прямой код 10010110 обратный код 10010111 дополнительный код Сложим число a с дополнительным кодом числа b 10010111 001111010100 Переведем результат в десятичную систему 110101002 = 27+26+ 24+22 = Ответ: 21210
Упражнение Результаты занесем в таблицу 10 -тичные 8 -битные беззнаковые a 61 00111101 61 61 b 105 01101001 105 a+b 166 10100110 166 − 90 a−b − 44 11010100 212 − 44
Битовые операции
Битовые операции 1. NOT − инверсия всех бит целого числа, т. е. все нули в представлении числа заменяются на единицы, а единицы на нули. 2. AND, OR, XOR − побитовые операции «и» , «или» , и «исключающее или» . a b a and b a or b a xor b 0 0 0 1 0 1 1 1 0
Битовые операции Примеры 1. NOT not(3)=− 4 в знаковых типах (не зависит от количества разрядов в типе) 2. AND, OR, XOR 5 and 3 = 1012 and 112 = 1 5 or 3 = 1012 or 112 = 1112 = 7 5 xor 3 = 1012 xor 112 = 1102 = 6 Not(0000 0011) 1 1 100 --------0000 0 101 - 0000 01 101 and 0000 0011 or 1 1 10 1 xor 1 10000 10011 ----------0000 0100 = 4 ----------0000 0001 0111 -4 0000 0110
Битовые операции 3. Сдвиги числа в ячейке Сдвиг влево: I SHL J Сдвиг числа I на J разрядов влево, освободившиеся правые J разрядов заполняются нулями, что соответствует умножению на 2 j. Сдвиг вправо: I SHR J Сдвиг числа I на J разрядов вправо, освободившиеся левые J разрядов заполняются нулями, что соответствует целочисленному делению на 2 j.
Решение задач Задача 1. По введенному целому неотрицательному n получить значение 2 n. {решение для 0 ≤ n ≤ 31} var n, p: longint; begin readln (n); p: =1 shl n; writeln (‘ 2 в степени‘, n, ‘=‘, p); end.
Решение задач Задача 2. Перевести натуральное число, не превосходящее 109, в двоичную систему счисления. Решение использует тот факт, что любое натуральное число хранится в компьютере в своем двоичном представлении. Поэтому достаточно узнать и напечатать значения всех его разрядов слева направо, опуская левые незначащие нули. Считаем, что все двоичные разряды в представлении двоичного числа n пронумерованы справа налево, начиная с нуля. Тогда значение i-го разряда равно нулю, если (1 shl i) and n = 0, т. к. 1 shl i представляет из себя число, в двоичном представлении которого присутствует всего одна единица в i-ом справа разряде. Если в этом разряде у числа n единицы нет, то результат указанной битовой операции and окажется нулевым.
Решение задач Задача 2. var n, k, i: longint; begin readln(n); write (n, ‘=‘); k: =30; {максимальный разряд, в котором может быть 1} while (k>0) and (n and (1 shl k)=0) do k: =k-1; {пропускаем незначащие ведущие нули} for i: =k downto 0 do {печатаем значащие цифры} if n and (1 shl i)=0 then write (0) else write (1); writeln (‘(2)’); end.
Вещественные числа
Нормализация чисел Если представлении целых чисел в компьютере ограничением может служить лишь величина записываемого числа, то при записи вещественного числа в первую очередь речь идет о точности его представления, т. е. о количестве значащих цифр, которые удалось сохранить в ограниченном числе разрядов.
Нормализация чисел Пусть у нас есть калькулятор, в котором на экране дисплея для вывода чисел есть только 10 знакомест (включая знак числа и десятичную точку). Необходимо выполнить действия со следующими числами: − 6392000000; − 639, 2; − 0, 0000006392; на дисплее такого калькулятора удастся отобразить лишь второе число. Можно представить числа иначе: − 6. 392 E+12; − 6. 392 E+02; − 6. 392 E − 08; где знак E читается как «умножить на десять в степени» . Такая запись отражает нормализованную форму записи чисел.
Нормализация чисел Нормализованная запись отличного от нуля действительного числа − это запись вида a = ± m × p q, мантисса порядок где q − целое число (положительное, отрицательное или ноль), m − правильная p-ичная дробь, у которой первая цифра после запятой не равна нулю, т. е. 1/p ≤ m < 1. Условимся, что запись нуля является нормализованной, если и мантисса и порядок равны нулю.
Нормализация чисел В нормализованной форме все числа записываются одинаково в том смысле, что запятая у них ставится в одном и том же месте − перед первой (самой левой) значащей цифрой. Величина числа (ее порядок) указывается отдельно, с помощью соответствующей степени основания системы счисления. В результате количество значащих цифр может оказаться меньше, чем число значащих цифр в исходном числе.
Примеры: Нормализация чисел 0 = 0, 0 × 100 3, 1415926 = 0, 31415926 × 101 1000 = 0, 1 × 104 0, 123456789 = 0, 123456789 × 100 0, 00001078 = 0, 1078 × 8− 4 1000, 00012 = 1, 000000012 × 24 AB, CDEF 16 = 0, ABCDEF 16 × 162 Так, как первая (левая) цифра мантиссы нормализованного числа отлична от 0, то в двоичной системе счисления старший бит значащей части равен 1. Поэтому общую форму записи нормализованного двоичного числа можно переписать в виде: a = 0, 1 m × 2 q 2
Точность представления В компьютерном представлении вещественных чисел с плавающей запятой максимально допустимое количество цифр в мантиссе определяет точность, с которой может быть представлено число. Пример Пусть есть 10 знакомест для представления числа, мантисса имеет 4 цифры, порядок − две. 248, 53786 будет представлено как +0. 2485 E+03 Переведем в привычное представление с фиксированной запятой, получим +248, 5 Тогда погрешность представления составит 248, 53786 − 248, 5 = 0, 03786
Точность представления Разность между значением числа x и неким его представлением x* называется абсолютной погрешностью. Относительной погрешностью называют величину |x − x*| x Относительная погрешность не зависит от числа и определяется только количеством разрядов, отводимых под мантиссу при представлении числа. В компьютерной записи вещественных чисел с плавающей запятой количество цифр, отводимых под запись порядка, определяет как наибольшее, так и наименьшее представимое положительное число.
Представление вещественных чисел Как и для целых чисел, при представлении действительных чисел в компьютере используется чаще всего двоичная система счисления, следовательно, предварительно десятичное число должно быть переведено в двоичную систему, а затем представлено в нормализованном формате с p=2. Независимо от используемых систем счисления существует два основных типа представления чисел в компьютере, называемые представлениями с фиксированной и плавающей запятой.
Представление вещественных чисел В типах данных, использующих представление чисел с фиксированной запятой, все разряды ячейки, кроме знакового разряда , служат для изображения разрядов чисел. Причем каждому разряду ячейки соответствует всегда один и тот же разряд числа, что и фиксирует место запятой перед определенным разрядом. Такая система упрощает выполнение арифметических действий, но сильно органичивает диапазон чисел, которые могут быть представлены в таком типе.
Представление вещественных чисел Поэтому для представления вещественных чисел в современных компьютерах формат данных с фиксированной запятой не применяется. Все целые типы данных представляются в компьютере в формате с фиксированной запятой. Положение запятой в них зафиксировано после самого правого разряда.
Представление вещественных чисел В современных компьютерах вещественные числа представляются в формате с плавающей запятой. Этот способ представления опирается на нормализованную (экспоненциальную) запись. При представлении чисел с плавающей запятой часть разрядов ячейки отводится для записи порядка числа, остальные разряды − для записи мантиссы. По одному разряду в каждой группе отводится для изображения знака порядка и знака мантиссы. sq sm bk bk-1. . . b 2 b 1 a 2. . . an- an 1 sq − знак порядка, sm − знак мантиссы, b 1 -bk − разряды порядка, a 1 -an − разряды мантиссы.
Вещественные типы данных в Turbo-Pascal Название real Размер 6 байт single 4 байта double 8 байт extended 10 байт comp 8 байт Точность 11 -12 зн. цифр 7 -8 зн. цифр 15 -16 зн. цифр 19 -20 зн. цифр Диапазон значений 10 -39 … 1038 10 -45 … 1038 10 -324 … 10308 10 -4951 … 104932 -9, 2∙ 1018 … 9, 2∙ 1018 Тип comp служит для записи только целых чисел. Операции над переменными такого типа производятся с помощью команд сопроцессора, предназначенных для вещественных чисел, а целочисленное деление с остатком не реализовано.
Вещественные типы данных В современных компьютерах арифметические операции над вещественными типами данных выполняются с использованием сопроцессоров. Первые компиляторы с языка Turbo Pascal разрабатывались тогда, когда персональные компьютеры сопроцессоров не имели. Реализация арифметических операций над вещественными числами типа real с целью увеличения скорости выполнения операций организована с использованием операций процессора над целыми числами. Сопроцессорные вещественные типы различаются между собой, в основном, лишь количеством разрядов, отводимых под мантиссу и порядок.
Вещественные типы данных Для типа real з. м m (39 разрядов) 46 47 q+t (8 разрядов) 8 7 0 Для сопроцессорных типов q+t (k разрядов) з. м m (n разрядов) порядок мантисса Порядок в вещественных типах представляется с помощью положительного беззнакового числа, для этого используется сдвиг t.
Арифметические операции над числами с плавающей запятой
Сложение и вычитание При сложении и вычитании чисел сначала производится подготовительная операция, называемая выравниванием порядков. При выравнивании порядков мантисса числа с меньшим порядком сдвигается в своей ячейке вправо на количество разрядов, равное разности порядков данных чисел. После этой операции сложение и вычитание мантисс выполняется достаточно просто, так же как над числами с фиксированной запятой.
Сложение и вычитание Пример Предположим, что в ячейке памяти можно записать 1 десятичный разряд порядка и 5 десятичных разрядов мантиссы. Требуется сложить числа: 0, 23619 × 102 и 0, 71824 × 10 -2 После выравнивания порядков второе слагаемое будет преобразовано к виду 0, 00071824 × 102 Выполняется сложение мантисс 0, 23619 0, 00071824 0, 23690824 Результат получили с большим числом разрядов, чем вмещает ячейка, поэтому он округляется и записывается в памяти в виде 0, 23691 × 102
Сложение и вычитание Пусть a = ± 0, ma × 2 qa, b = ± 0, mb × 2 qb два нормализованных двоичных числа, и qa ≥ qb (в противном случае можно просто поменять их местами). Результатом их сложения или вычитания будет: e = ( 0, ma ± 0, mb × 2 qa- q b) × 2 qa
Алгоритм компьютерного сложения (вычитания) двух вещественных чисел: 1. Порядки чисел a и b выравниваются по большему из них. Для этого мантисса числа b сдвигается на qa−qb разрядов вправо (часть значащих цифр при этом могут оказаться утерянными), а его порядок становится равным qa. 2. Выполняется операция сложения (вычитания) над мантиссами с округлением по значению n+1 -ой значащей цифры результата. 3. Мантисса результата должна быть нормализована (получившийся после нормализации порядок может отличаться от qa как в меньшую, так и в большую сторону).
Ошибки 1. Потеря значащих цифр мантиссы у меньшего из чисел при выравнивании порядков. В худшем случае утерянными оказываются все значащие цифры и a + b = a, что является абсурдным с точки зрения математики, но возможным в компьютерной арифметике с ограниченным числом разрядов
Пример 1 Если в вещественном типе хранится 40 значащих цифр, то 0, 12 × 225 + 0, 12 × 2 -20 = (0, 12 + 0, 12 × 2 -20 -25) × 225 Так как при сдвиге мантиссы меньшего числа на 45 разрядов вправо она становится равной 0, то результат такого сложения окажется равным 0, 12 × 225 , т. е. первому слагаемому.
Ошибки 2. Потеря крайней справа значащей цифры результата при сложении или вычитании мантисс. При сложении и вычитании двух чисел количество значащих цифр может увеличиться лишь на одну. Это влияет на точность, но не на правильность результата. Пример 2 Для 15 -разрядных мантисс: 0, 111 110 000 011 1112 + 0, 100 100 10012 =1, 100 010 101 000 0112 То есть значащих цифр получилось уже 16, и после округления и нормализации получим результат 0, 110001010100010 × 21
Ошибки 3. Выход за границу допустимого диапазона значений того или иного вещественного типа при нормализации результата. В данном случае получаемый порядок оказывается либо больше максимально возможного значения, либо меньше минимального. В данной ситуации чаще всего выполнение программы прерывается с сообщением об ошибке «арифметическое переполнение» . Пример 3 0, 1 × 2127 + 0, 1 × 2127 = 0, 1 × 2128 И если максимальный представимый порядок у вещественного типа равен 127 (как в типе real), результат окажется не представимым в данном типе.
Умножение и деление При умножении двух чисел с плавающей запятой их порядки складываются, а мантиссы − перемножаются (предварительное выравнивание не производится). При делении из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя.
Умножение и деление Поскольку результат арифметических операций должен быть нормализованным числом, необходимо дополнительное преобразование результата, называемое нормализацией. Мантисса результата сдвигается вправо или влево так, чтобы ее первая значащая цифра попала в первый разряд после запятой. Одновременно порядок результата увеличивается или уменьшается на число, равное величине сдвига.
Умножение и деление нормализованных чисел a и b в арифметике с ограниченным числом разрядов: d = a ∙ b = (0, m a ∙ 0, m b ) × 2 q a + q b ; f = a : b = (0, m a : 0, m b ) × 2 q a - q b;
Алгоритм компьютерного умножения (деления) двух вещественных чисел: 1. Мантиссы перемножаются (или одна делится на другую), при этом результат округляется до n значащих цифр (отметим, что при умножении может получиться 2 n значащих цифр в мантиссе, а при делении − бесконечно много). 2. Порядки при умножении складываются, а при делении вычитаются. 3. При необходимости мантисса результата нормализуется.
Арифметические операции Над мантиссами выполняются все четыре арифметических операции, а также операции сдвига, тогда как над порядками производятся только действия сложения и вычитания. Рассмотрим более подробно выполнение арифметических операций на примерах. Во всех примерах будем считать, что при записи вещественного числа в представлении с плавающей запятой один разряд отводится под десятичный порядок и пять разрядов − под десятичную мантиссу.
Примеры Пример 1 Сложить числа 0, 23619 × 108 + 0, 91824 × 108 Выравнивания порядков не требуется. Складываем мантиссы 0, 23619 0, 91824 1, 15443 Получим результат 1, 15443 × 108 Нормализуем результат, получим 0, 11544 × 109
Пример 2 Умножить числа 0, 23000 × Примеры 103 * 0, 95000 × 107 Умножим мантиссы: 0, 23000*0, 95000= 0, 21850 Сложим порядки: 3+7=10 Получим результат: 0, 21850 × 1010 Это число не поместится в отведенной ячейке. Порядок может содержать только одну цифру. Выполнение операции умножения над этими числами приведет к прекращению выполнения программы в связи с ошибкой: переполнение порядка.
Примеры Пример 3 Выполнить деление чисел 0, 92000 × 104 : 0, 30000 × 107 Разделим мантиссы, получим бесконечную периодическую дробь 3, 0(6). Следовательно, при формировании мантиссы результата произойдет его округление. Вычтем порядки, получим 4− 7=− 3 После нормализации получим результат 0, 30667 × 10 -2
Ошибки Основные ошибки, которые могут возникнуть при умножении (делении): 1. Получение не представимого в используемом вещественном типе порядка, как положительного, так и отрицательного, т. е. «арифметическое переполнение» . 2. Для операции умножения возможна потеря младшей значащей цифры при сдвиге мантиссы на один разряд влево (самый правый разряд мантиссы при этом заполняется нулем, а не очередной значащей цифрой результата перемножения мантисс) с одновременным уменьшением порядка результата на единицу, а при делении может понадобиться сдвиг вправо, вместе с увеличением порядка результата на единицу.
Итоги 1. Уже на этапе записи чисел в компьютер возникают ошибки округления, которые при выполнении арифметических действий нарастают. 2. Наличие погрешностей округления приводит к следующему правилу программирования: неразумно сравнивать в программе никакие два вещественных числа на точное равенство. 3. В результате вычитания возникают ненадежные значащие цифры, которые могут привести к серьезной потери точности ил получению недостоверного результата. 4. Добавление и вычитание малого числа може никак не сказаться на результате. 5. Получение очень больших чисел может вызвать переполнение порядка, а малых − отрицательное переполнение или исчезновение числа (превращение в ноль), это может привести к аварийному завершению программы.
Упражнение


