А.А. Вылиток - Представление чисел в ЭВМ (1056117), страница 2
Текст из файла (страница 2)
Реакция на такие ошибки может быть различной в разныхтипах компьютеров.3.3.1.2. Сложение и вычитание чисел со знаком в обратном кодеСложение в обратном коде происходит следующим образом: по обычномуалгоритму складываются все разряды, включая знаковый.
Результат такого сложениядля k-разрядных наборов имеет длину k + 1 (самый левый разряд результата равенединице, если был перенос при сложении старших разрядов операндов, иначе — нулю).Значение левого k + 1-го разряда добавляется к младшему разряду результата.Получаем k-разрядный набор, который и будет суммой двух чисел в обратном коде.Пример (k = 3):+310 + (−110 ) = 0112 + 1102 = 10012 B 0012 + 1 = 0102 = +210.Вычитание чисел в обратном коде x − y сводится к сложению x + (−y).-5-3.3.1.3. Сложение и вычитание чисел со знаком в дополнительном кодеВ дополнительном коде сложение происходит так: по обычному алгоритмускладываются все разряды, включая знаковый; единица переноса в k + 1-й разрядотбрасывается (т.е.
сложение по модулю 2k).Пример (k = 3):+310 + (−110) = 0112 + 1112 = 10102 B 0102 = +210.При вычитании тоже действует обычный алгоритм, причем если уменьшаемоеменьше вычитаемого, к двоичному коду уменьшаемого слева приписывается единица(т.е. добавляется 2k ) и только после этого производится вычитание (такой способназывается вычитание по модулю 2k).Пример (k = 3):110 − 310 = 0012 − 0112 B 10012 − 0112 = 1102 = −210.Если x и y — числовые значения дополнительного кода знаковых чисел, точисловые значения дополнительных кодов суммы и разности определяются последующим формулам:⎧ x + y , если x + y < 2 k ,⎪k( x + y ) mod 2 = ⎨⎪⎩ x + y − 2 k , если x + y ≥ 2 k⎧ x − y, если x ≥ y,( x − y ) mod 2 k = ⎨ k⎩(2 + x) − y, если x < y3.3.2.
Умножение и делениеВо многих компьютерах умножение производится как последовательностьсложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающимсумматором, который до начала выполнения операции содержит число ноль. Впроцессе выполнения операции в нем поочередно размещаются множимое ирезультаты промежуточных сложений, а по завершении операции — окончательныйрезультат. Другой регистр АЛУ, участвующий в выполнении этой операции, вначалесодержит множитель. Затем по мере выполнения сложений содержащееся в нем числоуменьшается, пока не достигнет нулевого значения.Деление для компьютера является трудной операцией.
Обычно оно реализуетсяпутем многократного прибавления к делимому дополнительного кода делителя.3.3.3. Ошибки при выполнении арифметических операцийПри выполнении арифметических операций могут возникать ситуации, когдастаршие разряды результата операции не помещаются в отведенной для него областипамяти. Ниже приводятся примеры ошибочных вычислений (k = 3).Сложение знаковых чисел в обратном коде:–310 + (−210) = 1002 + 1012 = 10012 B 0012 + 1 = 010 = +210Вычитание знаковых чисел в обратном коде:+210 − (−310)= 0102 − 1012 B 10102 − 1012 = 1012 = −310.-6-Такая ситуация называется переполнением цифровой части (мантиссы) форматачисла.
Для обнаружения переполнения и оповещения о возникшей ошибке вкомпьютере используются специальные средства. Реакция на разные ошибки можетбыть разная. Так, в некоторых ЭВМ при делении на ноль вычисления прекращаются(фатальная ошибка), а при переполнении мантиссы устанавливается признакпереполнения в так называемом регистре флагов и вычисления продолжаются.4. Представление вещественных чиселВещественными числами ( в отличие от целых ) в компьютерной техникеназываются числа, имеющие дробную часть.
При их изображении во многих языкахпрограммирования вместо запятой принято ставить точку. Так, например, число 5 —целое, а числа 5,1 и 5,0 — вещественные. Для удобства отображения чисел,принимающих значения из достаточно широкого диапазона (то есть, как оченьмаленьких, так и очень больших), используется форма записи чисел с порядкомоснования системы счисления. Например, десятичное число 1,75 можно в этой формепредставить так:1,75•100 = 0,175•101 = 0,0175•102 = ... ,или так:17,5•10−1 = 175,0•10−2 = 1750,0•10−3 = ...
.Любое число N в системе счисления с основанием q можно записать в видеN = M • q p, где M называется мантиссой числа, а p — порядком. Такой способ записичисел называется представлением с плавающей точкой. Если «плавающая» точкарасположена в мантиссе перед первой значащей цифрой, то при фиксированномколичестве разрядов, отведённых под мантиссу, обеспечивается запись максимальногоколичества значащих цифр числа, то есть максимальная точность представления числав машине. Из этого следует, что мантисса должна быть правильной дробью, перваяцифра которой отлична от нуля: M ∈ [0,1; 1).
Такое, наиболее выгодное длякомпьютера, представление вещественных чисел называется нормализованным.Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, асамо основание — в десятичной системе.4.1. Примеры нормализованного представления:Десятичная системаДвоичная система3752,15 = 0,75215•10 ;−101,01 = −0,10101•211 (порядок 112 = 310)−0,000039 = −0,39•10−4;−0,000011 = 0,11•2−100 (порядок −1002 = −410)Вещественные числа в компьютерах различных типов записываются поразному. При этом компьютер обычно предоставляет программисту возможностьвыбора из нескольких числовых форматов наиболее подходящего для конкретнойзадачи — с использованием четырех, шести, восьми или десяти байтов.В качестве примера приведем характеристики форматов вещественных чисел,используемых IBM PC-совместимыми персональными компьютерами:Форматывещественных чиселРазмер вбайтахПримерный диапазонабсолютных значенийКоличество значащихдесятичных цифрОдинарный410−45 … 10387 или 8ВещественныйДвойнойРасширенный6810101010−39−324−49323811 или 12… 1030815 или 16… 10493219 или 20… 10-7-4.2.
Представление в виде набора битовЧисла с плавающей точкой представляются в виде битовых наборов, в которыхотводятся разряды для мантиссы, порядка, знака числа и знака порядка:……ПорядокМантиссаЗнак порядкаЗнак числаЧем больше разрядов отводится под запись мантиссы, тем выше точностьпредставления числа. Чем больше разрядов занимает порядок, тем шире диапазон отнаименьшего отличного от нуля числа до наибольшего числа, представимого в машинепри заданном формате.Покажем на примерах, как записываются некоторые числа в нормализованномвиде в четырехбайтовом формате с семью разрядами для записи порядка.Число 6,2510 = 110,012 = 0,110012•2112:3130002200000111100Порядок10…210000МантиссаЗнак порядкаЗнак числаЧисло −0,12510 = −0,0012 = −0,12•2−102дополнительном коде):313011(отрицательныйпорядок221111Порядок110100000…записан210000вМантиссаЗнак порядкаЗнак числа4.3. Арифметические действия над нормализованными числамиК началу выполнения арифметического действия операнды операциипомещаются в соответствующие регистры АЛУ.При сложении и вычитании сначала производится подготовительная операция,называемая выравниванием порядков.
В процессе выравнивания порядков мантисса-8-числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов,равное разности порядков операндов. После каждого сдвига порядок увеличивается наединицу.В результате выравнивания порядков одноименные разряды чисел оказываютсярасположенными в соответствующих разрядах обоих регистров, после чего мантиссыскладываются или вычитаются.В случае необходимости полученный результат нормализуется путем сдвигамантиссы результата влево.
После каждого сдвига влево порядок результатауменьшается на единицу.Пример 1. Сложить двоичные нормализованные числа 0,101112•2−1 и0,110112•2102. Разность порядков слагаемых здесь равна трем, поэтому перед сложениеммантисса первого числа сдвигается на три разряда вправо:0,000101112 •2102+0,110112•21020,111011112 •2102Пример 2. Выполнить вычитание двоичных нормализованных чисел 0,10101•2102и 0,11101•21.
Разность порядков уменьшаемого и вычитаемого здесь равна единице,поэтому перед вычитанием мантисса второго числа сдвигается на один разряд вправо:0,101012 •2102−0,0111012 •21020,0011012 •2102Результат получился не нормализованным, поэтому его мантисса сдвигаетсявлево на два разряда с соответствующим уменьшением порядка на две единицы:0,11012•20.При умножении двух нормализованных чисел их порядки складываются, амантиссы перемножаются.Пример 3.
Выполнить умножение двоичных нормализованных чисел:(0,111012•21012) • (0,10012•2112) = (0,111012• 0,10012) • 2 (1012 + 112) = 0,1000001012•210002При делении двух нормализованных чисел из порядка делимого вычитаетсяпорядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случаенеобходимости полученный результат нормализуется.Пример 4. Выполнить деление двоичных нормализованных чисел:0,11112•21002 ÷ 0,1012•2112 = (0,11112 ÷ 0,1012) • 2 (1002 − 112) = 1,12•21 = 0,112•2102Использование представления чисел с плавающей точкой существенноусложняет схему арифметико-логического устройства.-9-.