ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра ПМ и ВТ Пономарёв В.С. Красников В.В.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ по ...
20 downloads
225 Views
281KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Кафедра ПМ и ВТ Пономарёв В.С. Красников В.В.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ по курсу: "Организация и функционирование ЭВМ и систем" Часть I Арифметические основы ЭВМ
Ростов-на-Дону 1996
1. Системы счисления. 1.1 Основные понятия и определения. Под системой счисления понимается способ представления любого числа с помощью некоторого алфавита символов, называемых цифрами. Все системы счисления делятся на позиционные и непозиционные. Непозиционными системами являются такие системы счисления, в которых каждый символ сохраняет свое значение независимо от места его положения в числе. Примером непозиционной системы счисления является римская система. К недостаткам таких систем относятся наличие большого количества знаков и сложность выполнения арифметических операций. Система счисления называется позиционной, если одна и та же цифра имеет различное значение, определяющееся позицией цифры в последовательности цифр, изображающей число. Это значение меняется в однозначной зависимости от позиции, занимаемой цифрой, по некоторому закону. Примером позиционной системы счисления является десятичная система, используемая в повседневной жизни. Количество p различных цифр, употребляемых в позиционной системе определяет название системы счисления и называется основанием системы счисления - “ p ”. В десятичной системе используются десять цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; эта система имеет основанием число десять. Любое число N в позиционной системе счисления с основанием p может быть представлено в виде полинома от основания p :
N = a K p K + a K −1 p K −1 + ... + a1 p 1 + a 0 p 0 + a −1 p −1 + a −2 p −2 + ... . (1.1) здесь N - число, a - коэффициенты (цифры числа), p - основание системы счисления ( p >1). Принято представлять числа в виде последовательности цифр:
N = a K a K −1 ... a1 a 0 . a −1 a −2 ... . В этой последовательности точка отделяет целую часть числа от дробной (коэффициенты при положительных степенях, включая нуль, от коэффициентов при отрицательных степенях). Точка опускается, если нет отрицательных степеней (число целое). В ЭВМ применяют позиционные системы счисления с недесятичным основанием: двоичную, восьмеричную, шестнадцатеричную. В аппаратной основе ЭВМ лежат двухпозиционные элементы, которые могут находиться только в двух состояниях; одно из них обозначается 0, а другое - 1. Поэтому основной системой счисления применяемой в ЭВМ является двоичная система. Двоичная система счисления. Используется две цифры: 0 и 1. В двоичной системе любое число может быть представлено в виде: X = b M b M −1 ... b1b0 . b−1b−2 ... , где b J либо 0, либо 1. Эта запись соответствует сумме степеней числа 2, взятых с указанными коэффициентами:
X = b M ⋅ 2 M + b M −1 ⋅ 2 M −1 + ... + b1 ⋅ 2 1 + b0 ⋅ 2 0 + b−1 ⋅ 2 −1 + b−2 ⋅ 2 −2 + ... Восьмеричная система счисления. Используется восемь цифр: 0, 1, 2, 3, 4, 5, 6, 7. Употребляется в ЭВМ как вспомогательная для записи информации в сокращенном виде. Для представления одной цифры восьмеричной системы используется три двоичных разряда (триада) (Таб. 1). Шестнадцатеричная система счисления. Для изображения чисел употребляются 16 цифр. Первые десять цифр этой системы обозначаются цифрами от 0 до 9, а старшие шесть цифр – латинскими буквами: 10–A, 11– B, 12–C, 13–D, 14–E, 15–F. Шестнадцатеричная система используется для записи информации в сокращенном виде. Для представления одной цифры шестнадцатеричной системы счисления используется четыре двоичных разряда (тетрада) (Таб. 1).
б) Перевести 703 . 04 8 → "10" с.с.
Таб. 1. Наиболее важные системы счисления. Двоичная (Основание 2) 0 1
Восьмеричная (Основание 8) Триады 0 000 1 001 2 010 3 011 4 100 5 101 6 110 7 111
Десятичная Шестнадцатеричная (Основание 10) (Основание 16) Тетрады 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111
1.2 Перевод чисел из одной системы счисления в другую. Перевод чисел в десятичную систему осуществляется путем составления степенного ряда с основанием той системы, из которой число переводится. Затем подсчитывается значение суммы. Пример. а) Перевести 10101101.1012 → "10" с.с. ∗
10101101.1012 = 1 ⋅ 2 + 0 ⋅ 2 + 1 ⋅ 2 + 0 ⋅ 2 + 1 ⋅ 2 + 1 ⋅ 2 + 0 ⋅ 2 + 7
6
5
4
3
2
1
+1 ⋅ 2 0 + 1 ⋅ 2 −1 + 0 ⋅ 2 −2 + 1 ⋅ 2 −3 = 173 . 62510 ∗
Здесь и в дальнейшем при одновременном использовании нескольких различных систем счисления основание системы к которой относится число будем указывать в виде нижнего индекса.
703 . 04 8 = 7 ⋅ 8 2 + 0 ⋅ 81 + 3 ⋅ 8 0 + 0 ⋅ 8 −1 + 4 ⋅ 8 −2 = 451. 062510 в) Перевести B 2 E . 4 16 → "10" с.с. B2 E . 4 16 = 11 ⋅ 16 2 + 2 ⋅ 161 + 14 ⋅ 16 0 + 4 ⋅ 16 −1 = 2862 . 2510 . Перевод целых десятичных чисел в восьмеричную, шестнадцатеричную и двоичную системы осуществляется последовательным делением десятичного числа на основание той системы, в которую оно переводится, до тех пор, пока не получится частное меньшее этого основания. Число в новой системе записывается в виде остатков деления, начиная с последнего. Пример. а) Перевести 18110 → "8" с.с. 181 176 5
8 22 16 6
8 2
Результат 18110 = 2658 . б) Перевести 622 10 →"16" с.с. 622 16 48 38 16 142 32 2 128 6 14 Результат 622 10 = 26 E 16 . Перевод правильных дробей из десятичной системы счисления в двоичную, восьмеричную и шестнадцатеричную системы счисления. Для перевода правильной десятичной дроби в другую систему эту дробь надо последовательно умножать на основание той системы, в которую она переводится. При этом умножаются только дробные части. Дробь в новой системе записывается в виде целых частей произведений, начиная с первого. Пример.
Перевести 0 . 312510 → "8" с.с. 0 3125 × 8 2 5000 × 8 4 0000 Результат 0 . 312510 = 0 . 24 8 . Замечание. Конечной десятичной дроби в другой системе счисления может соответствовать бесконечная (иногда периодическая) дробь. В этом случае количество знаков в представлении дроби в новой системе берется в зависимости от требуемой точности. Пример. Перевести 0 . 6510 →"2" с.с. Точность 6 знаков. 0 6 5× 2 1 3×2 0 6×2 Результат 0 .6510 ≈ 0 .10(1001) 2 . 1 2×2 0 4×2 0 8×2 1 6×2 ... Для перевода неправильной десятичной дроби в систему счисления с недесятичным основанием необходимо отдельно перевести целую часть и отдельно дробную. Пример. Перевести 23 .12510 → "2" с.с. 1) Переведем целую часть: 2) Переведем дробную часть:
23 2 22 11 2 1 10 5 1 4 1
2 2 2 2 1 0
0 0 0 1
125 × 2 25 × 2 5 ×2 0
Таким образом 2310 = 101112 ; 0 .12510 = 0 . 0012 . Результат: 23 .12510 = 10111. 0012 .
Необходимо отметить, что целые числа остаются целыми, а правильные дроби – дробями в любой системе счисления. Для перевода восьмеричного или шестнадцатеричного числа в двоичную форму достаточно заменить каждую цифру этого числа соответствующим трехразрядным двоичным числом (триадой) (Таб. 1) или четырехразрядным двоичным числом (тетрадой) (Таб. 1), при этом отбрасывают ненужные нули в старших и младших разрядах. Пример.
3 { 0 { 5 .{ 4 {
а)
8
= 11000101.12 ;
011000101100
б)
7 { B { 2 .{ E {
16
= 11110110010 .1112 .
011110110010 1110 Для перехода от двоичной к восьмеричной или шестнадцатеричной системе поступают следующим образом: двигаясь от точки влево и вправо, разбивают двоичное число на группы по три ( четыре ) разряда, дополняя при необходимости нулями крайние левую и правую группы. Затем триаду ( тетраду ) заменяют соответствующей восьмеричной ( шестнадцатеричной ) цифрой. Пример. а) Перевести 1101111001.11012 → "8" с.с.
001 101111001.110 100 = 1571. 64 8 {{{{ {{ 1
5
7
1
6
4
б) Перевести 11111111011.1001112 → "16" с.с.
0111 11111011.1001 1100 = 7 FB . 9C16 {{ {{{
F B 9 C Перевод из восьмеричной в шестнадцатеричную систему и обратно осуществляется через двоичную систему с помощью триад и тетрад. Пример. Перевести 175 . 24 8 → "16" с.с. 7
1{ 7{ 5 .{ 2{ 4 {
001111101 010100
8
= 1111101. 01012 =
= 0111 1101.0101 {{ { 2 = 7 D.516 7
D
5
Результат: 175 . 24 8 = 7 D . 516 .
1.3 Двоичная арифметика. Правила выполнения арифметических действий над двоичными числами задаются таблицами двоичных сложения, вычитания и умножения. Таблица двоичного Таблица двоичного Таблица двоичного сложения вычитания умножения 0+0=0 0–0=0 0 × 0=0 0+1=1 1–0=1 0 × 1=0 1+0=1 1–1=0 1 × 0=0 1+1=10 10–1=1 1 × 1=1 При сложении двоичных чисел в каждом разряде производится сложение цифр слагаемых и переноса из соседнего младшего разряда если он имеется. При этом необходимо учитывать, что 1+1 дают нуль в данном разряде и единицу переноса в следующий. Пример. Выполнить сложение двоичных чисел: а) X=1101, Y=101; единицы переноса 1 1
X= 1101 Y=+ 101 X+Y=10010 Результат 1101+101=10010.
При вычитании двоичных чисел в данном разряде при необходимости занимается 1 из старшего разряда. Эта занимаемая 1 равна двум 1 данного разряда. Пример. Заданы двоичные числа X=10010 и Y=101. Вычислить X–Y.
1& 001& 0 − 101 01101 Результат 10010 – 101=1101. Умножение двоичных чисел производится по тем же правилам, что и для десятичных с помощью таблиц двоичного умножения и сложения. Пример. 1001 × 101=? 1001 × 101 1001 1001 101101 Результат 1001 × 101=101101. Деление двоичных чисел производится по тем же правилам, что и для десятичных. При этом используются таблицы двоичного умножения и вычитания. Пример. 1100.011: 10.01=?
110001.1 – 1001
б) X=1101, Y=101, Z=111; 1 111
1101 – 1001 1001 – 1001
единицы переноса
X= 1101 Y= + 101 Z= + 111 X+Y+Z=11001 Результат 1101+101+111=11001.
1001 101. 1
0
Результат 1100.011:10.01=101.1.
Упражнения 1. 1. Перевести следующие числа в десятичную систему счисления: а) 1101112 ; б) 10110111.10112 ; в) 563 . 44 8 ; г) 721. 358 ; д) 1C 4 . A16 ; е) 9 A2 F . B516 . 2. Перевести следующие числа из "10" с.с в "2", "8", "16" с.с.: б) 1209 ; в) 362 ; г) 3925 ; д) 11355 . а) 463 ; 3. Перевести следующие числа из "10" с.с в "2", "8", "16" с.с. (точность 5 знаков после точки): б) 0 . 345 ; в) 0 . 225 ; г) 0 . 725 ; а) 0 . 0625 ; е) 31. 2375 ; ж) 725 . 03125 ; з) 8846 . 04 . д) 217 . 375 ; 4. Перевести следующие числа в двоичную систему счисления: а) 1725 . 326 8 ; б) 341. 34 8 ; в) 7 BF . 52 A16 ; г) 3D2 . C16 . 5. Перевести следующие числа из одной системы счисления в другую: а) 11011001. 010112 → "8" с.с.; б) 1011110 .11012 → "8" с.с.; в) 1101111101. 01011012 → "16" с.с.; г) 110101000 .1001012 → "16" с.с.. 6. Перевести следующие числа из одной системы счисления в другую: а) 312 . 7 8 → "16" с.с.; б) 51. 438 → "16" с.с.; г) D4 .19 16 → "8" с.с.. в) 5B . F16 → "8" с.с.; 7. Заданы двоичные числа X и Y. Вычислить X+Y и X–Y , если: а) X= 1101001 , Y= 101111 ; б) X= 101110110 , Y= 10111001 ; в) X= 100011001 , Y= 101011 . 8. Заданы двоичные числа X и Y. Вычислить X*Y и X/Y , если: а) X= 1000010011 , Y= 1011 ; б) X= 110010101 , Y= 1001 ; в) X= 100101. 011 , Y= 110 .1 ; г) X= 100000 .1101 , Y= 101. 01 .
2. Основы машинной арифметики с двоичными числами. Любая информация (числа, команды, записи и т. п.) представляется в ЭВМ в виде двоичных кодов фиксированной или переменной длины. Отдельные элементы двоичного кода, имеющие значение 0 или 1, называют разрядами или битами. Двоичный код состоящий из 8 разрядов носит название байта. Для записи чисел также используют 32-разрядный формат (машинное слово), 16-разрядный формат (полуслово) и 64-разрядный формат (двойное слово).
2.1 Коды чисел. В ЭВМ в целях упрощения выполнения арифметических операций применяют специальные коды для представления чисел. Использование кодов позволяет свести операцию вычитания чисел к арифметическому сложению кодов этих чисел. Применяются прямой, обратный и дополнительный коды чисел. Прямой код используется для представления отрицательных чисел в запоминающем устройстве ЭВМ, а также при умножении и делении. Обратный и дополнительный коды используются для замены операции вычитания операцией сложения, что упрощает устройство арифметического блока ЭВМ. К кодам выдвигаются следующие требования: 1) Разряды числа в коде жестко связаны с определенной разрядной сеткой. 2) Для записи кода знака в разрядной сетке отводится фиксированный, строго определенный разряд. Например, если за основу представления кода взят один байт, то для представления числа будет отведено 7 разрядов, а для записи кода знака один разряд. Прямой код. Прямой код двоичного числа совпадает по изображению с записью самого числа. Значение знакового разряда для положительных чисел равно 0, а для отрицательных чисел 1.* Пример. В случае, когда для записи кода выделен один байт, для числа +1101 прямой код 0,0001101, для числа –1101 прямой код 1,0001101.
*
Знаковым разрядом обычно является крайний разряд в разрядной сетке. В дальнейшем при записи кода знаковый разряд от цифровых условимся отделять запятой. Если количество разрядов кода не указано будем предполагать, что под запись кода выделен один байт.
Обратный код. Обратный код для положительного числа совпадает с прямым кодом. Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица. Пример. Для числа +1101 прямой код 0 , 0001101; обратный код 0,0001101. Для числа –1101 прямой код 1 , 0001101; обратный код 1,1110010. Дополнительный код. Дополнительный код положительного числа совпадает с прямым кодом. Для отрицательного числа дополнительный код образуется путем получения обратного кода и добавлением к младшему разряду единицы. Пример. Для числа +1101: прямой код обратный код дополнительный код 0,0001101 0,0001101 0,0001101
Для числа –1101: прямой код обратный код 1,0001101 1,1110010
X= 111 Y= – 11 X+Y= 100 2) Сложим числа используя коды: Прямой код Xпр=0,0000111 Yпр=1,0000011
Сложение в обратном коде 0,0000111 Xобр= Yобр= 1, 1111100 1 0,0000011 +1 (X+Y)обр= 0,0000100
Сложение в дополнительном коде 0,0000111 Xдоп= Yдоп= 1,1111101 1)0,0000100 отбрасывается
(X+Y)доп= 0,0000100
Так как результат сложения является кодом положительного числа (знак 0), то (X+Y)обр=(X+Y)доп=(X+Y)пр . дополнительный код 1,1110011
2.2 Особенности сложения чисел в обратном и дополнительном кодах. При сложении чисел в дополнительном коде возникающая единица переноса в знаковом разряде отбрасывается. При сложении чисел в обратном коде возникающая единица переноса в знаковом разряде прибавляется к младшему разряду суммы кодов. Если результат арифметических действий является кодом отрицательного числа, необходимо преобразовать его в прямой код. При этом обратный код преобразуется в прямой заменой цифр во всех разрядах кроме знакового на противоположные. Дополнительный код преобразуется в прямой также, как и обратный, с последующим прибавлением единицы к младшему разряду. Пример. Сложить X и Y в обратном и дополнительном кодах. а) X= 111, Y= –11; 1) Сложим числа пользуясь правилами двоичной арифметики:
б) X= –101,Y= –11; 1) Сложим числа пользуясь правилами двоичной арифметики: X= – 101 Y= – 110 X+Y= –1011 2) Сложим числа используя коды: Прямой код Xпр=1,0000101 Yпр=1,0000110
Сложение в обратном коде 1,1111010 Xобр= Yобр= 1,1111001 1 1,1110011 +1 (X+Y)обр= 1,1110100
Сложение в дополнительном коде 1,1111011 Xдоп= Yдоп= 1,1111010 1)1,1110101 отбрасывается
(X+Y)доп= 1,1110101
Так как сумма является кодом отрицательного числа (знак 1) то необходимо перевести результаты в прямой код: а) из обратного кода (X+Y)обр=1,1110100 → (X+Y)пр=1,0001011; б) из дополнительного кода
(X+Y)доп=1,1110101 → (X+Y)пр=1,0001010+0,0000001=1,0001011. Таким образом X+Y= –1011 и полученный результат совпадает с обычной записью.
2.3 Модифицированные обратный и дополнительный коды. При переполнении разрядной сетки, происходит перенос единицы в знаковый разряд. В этом случае положительное число, получившееся в результате арифметической операции может восприниматься как отрицательное, так как в знаковом разряде “1”. Например: X=0,1010110 Y=0,1101000 X+Y=1,0111110 Здесь X и Y – коды положительных чисел, но ЭВМ воспринимает результат их сложения как код отрицательного числа (“1” в знаковом разряде). Для обнаружения переполнения разрядной сетки вводятся модифицированные коды. Модифицированный обратный код – в нем под знак числа отводится не один, а два разряда. Форма записи чисел в модифицированном обратном коде выглядит следующим образом: 1) для положительного числа м X= X 1 X 2 X 3 ... X n ; X oб p= 00, X 1 X 2 X 3 .. . X n ; 2) для отрицательного числа м X oб X= X 1 X 2 X 3 ... X n ; p= 11, X 1 X 2 X 3 . .. X n ; (обозначение X читается “не X”, т.е. , если X=0, то X =1 и наоборот, если X=1, то X =0). Любая другая комбинация (“01” или “10”), получившаяся в знаковых разрядах служит признаком переполнения разрядной сетки. Сложение чисел в модифицированном обратном коде ничем не отличается от сложения в обычном обратном коде. Рассмотрим предыдущий пример, выполнив сложение в модифицированном обратном коде: X=00,101011 Y=00,110100 X+Y=01,011111 В ЭВМ в процессе работы оба знаковых разряда сравниваются. В случае появления признака переполнения машина останавливается.
Модифицированный дополнительный код также рассматривает два знаковых разряда, а во всем остальном ничем не отличается от обычного дополнительного кода, то есть: 1) для положительного числа X= X 1 X 2 X 3 ... X n ; X дмо п= 00, X 1 X 2 X 3 . .. X n ; 2) для отрицательного числа X= X 1 X 2 X 3 ... X n ; X дмо п= 11, X 1 X 2 X 3 . . . X n +0,000 . . . 1;
Пример. Даны два числа: X=101001 и Y= –11010. Сложить их в дополнительном и модифицированном дополнительном кодах. 1) Переведем X и Y в дополнительный и модифицированный дополнительный код: Обычная запись Обратный код Дополнительный код Xдоп=0,0101001 X=+0101001 Xобр=0,0101001 Yобр=1,1100101 Yдоп=1,1100110 Y=–0011010 Обычная запись X=+101001
Мод. обратный код X ом б р =00,101001
Мод. дополнительный код X мд о п=00,101001
Y=–011010
Yомб р =11,100101
Yдмо п =11,100110
2) Выполним сложение: Xдоп= 0,0101001 Yдоп= 1,1100110 1)0,0001111
X мд о п =
00,101001
Y мд о п =
11,100110 1) 00,001111
отбрасывается
(X+Y)доп= 0,0001111
отбрасывается
(X+Y)
м д о п=
00,001111
Переполнения нет (в знаковых разрядах “00”), поэтому результаты, полученные в обычном и модифицированном кодах совпадают (X+Y=1111).
Упражнения 2.
1) Записать число в прямом, обратном и дополнительном кодах: а) 11010; б) –11101; в) –101001; г) –1001110. 2) Перевести X и Y в прямой, обратный и дополнительный коды. Сложить их в обратном и дополнительном кодах. Результат перевести в прямой код. Проверить полученный результат пользуясь правилами двоичной арифметики.
а) Ячейка с целой и дробной частью .
а) X= –11010; Y= 1001111;
б) X= –11101; Y= –100110;
в) X= 1110100; Y= –101101;
Знак числа
г) X= –10110; Y= –111011;
д) X= 1111011; Y= –1001010;
е) X= –11011; Y= –10101.
б) Ячейка с записью целого числа.
3) Сложить X и Y в модифицированном обратном и модифицированном дополнительном восьмиразрядных кодах. В случае появления признака переполнения увеличить число разрядов в кодах и повторить суммирование. Результат перевести в прямой код и проверить пользуясь правилами двоичной арифметики. а) X= 10110; Y= 110101;
б) X= 11110; Y= –111001;
в) X= –11010; Y= –100111;
г) X= –11001; Y= –100011;
д) X= –10101; Y= 111010;
е) X= –1101; Y= –111011 .
0
1
2
3
4
5
2n−1
6
7
8
9
21
20
2 −1
2 −2
10
11
12
13
14
15 2−m
144444244444 3 14444442444444 3
0
Целая часть (n разрядов)
1
2
3
4
5
Дробная часть (m разрядов)
6
7
8
9
10
n−1
2
11
12
13
14
15
1
20
2
14444444444442444444444444 3 Знак числа
Цифровые разряды (n)
К достоинствам использования чисел с фиксированной точкой относятся простота выполнения арифметических операций и высокая точность изображения чисел. К недостаткам – небольшой диапазон представления чисел.
3. Формы представления чисел в ЭВМ.
3.2 Числа с плавающей точкой.
При арифметической обработке данных как правило применяются вещественные числа, так как их диапазон применения больше.
Для представления чисел с плавающей точкой (ЧПТ) используется полулогарифмическая форма записи числа:
3.1 Числа с фиксированной точкой. Число с фиксированной точкой имеет знаковый и цифровой разряды. Фиксированная точка означает, что на этапе конструирования ЭВМ было определено сколько и какие разряды машинного слова отведены под изображение целой и дробной частей числа. Запятая в разрядной сетке может быть зафиксирована, в принципе, после любого разряда. Пример.
N = ± mq ± p где q – основание системы счисления, ± p – порядок числа, m – мантисса числа N . Положение точки определяется значением порядка p. С изменением порядка точка перемещается (плавает) влево или вправо. Пример.
12510 = 12 .5 ⋅ 101 = 1. 25 ⋅ 10 2 = 0 .125 ⋅ 10 3 = 0 . 0125 ⋅ 10 4 =... .
Для установления однозначности при записи чисел принята нормализованная форма записи числа. Мантисса нормализованного числа может
изменяться
в
1 q ≤ m < 1 . Таким образом в
диапазоне:
нормализованных числах цифра после точки должна быть значащей. Пример.
1
2
3
4
6
7
8
9
10
11
12
13
14
15
1442443 14444444 4244444444 3 Знак Знак
Порядок (4 разряда) б) представление чисел в формате слова
Мантисса (10 разрядов)
0
9
m
p
1
2
3
4
5
6
3
4
5
6
7
8
9
10 11
0
0
0
0
1
1
1
0
7
8
31
0
...
0
14444 4244444 3 144444244444 3 Порядок (7 разрядов)
p
Мантисса (23 разряда)
б) Число А = −3 . 510 = −11.12 = −0 .111 ⋅ 10
нормализованное число
5
2
0
m
Для представления чисел в машинном слове выделяют группы разрядов для изображения мантиссы, порядка, знака числа и знака порядка: а) представление чисел в формате полуслова 0
1
0
Знак Знак
0.0832 ⋅ 10 3 = 0.832 ⋅ 10 2 14243 1424 3 ненормализованное число
0
0
10
0
1
2
3
4
5
6
7
8
9
10 11
1
0
0
0
0
0
0
1
0
1
1
1
12
0
31
...
0
14444 4244444 3 144444244444 3 Знак Знак
m
Порядок (7 разрядов)
p
Мантисса (23 разряда)
Максимальным числом представимым в формате слова будет А=
(0 .111 ... 1⋅ 101111111 ) 2 ≅ (1 ⋅ 2 127 ) 10 . 14 2 43 23
0
1
2
3
4
5
6
7
8
9
10 11
12
0
0
1
1
1
1
1
1
1
1
1
1
14444 4244444 3 144444244444 3 Знак Знак
Порядок Мантисса m p (7 разрядов) (23 разряда) Наиболее типично представление ЧПТ в формате слова (32 разряда). Пример.
31
...
1
14444 4244444 3 144444244444 3
31
...
1
Зн
m Зн p
Порядок Мантисса Минимальным числом из возможно представимых в формате слова
будет А = ( −0 .111 ... 1⋅ 10
14 2 43
1111111
) 2 ≅ ( −1 ⋅ 2 127 ) 10
23
0
1
2
3
4
5
6
7
8
9
10 11
12
1
0
1
1
1
1
1
1
1
1
1
1
а) Число А = 4 10 = 100 2 = 0 .1 ⋅ 10 записывается в ячейку следующим образом: 11
1
31
...
1
144444244444 3 144444244444 3 Зн
m Зн p
Порядок
Мантисса
Минимальным по модулю, отличным от нуля и нормализо-ванным будет А = ( 0 .1 ⋅ 10
−1111111
1 ) 2 = ( ⋅ 2 −127 ) 10 = (2 −128 ) 10 . 2
0
1
2
3
4
5
6
7
8
9
10 11
12
0
1
1
1
1
1
1
1
1
1
0
0
0
31
...
0
144444244444 3 144444244444 3 Зн m Зн p
Порядок
Мантисса
Таким образом числа с плавающей точкой позволяют увеличить диапазон обрабатываемых чисел, но при этом точность изображения чисел определяется только разрядами мантиссы и уменьшается по сравнению с числами с фиксированной точкой. При записи числа в формате слова диапазон представимых чисел будет от −1 ⋅ 2
127
до 1 ⋅ 2
127
(2
127
)
≈ 1038 , а
точность определяться мантиссой, состоящей из 23 разрядов. Точность может быть повышена путем увеличения количества разрядов мантиссы. Это реализуется путем представления чисел с так называемой двойной точностью, т.е. число записывается в двух подряд ячейках памяти. 0 1 2 3 8 9 10 31 0 1 31
...
...
мантисса. Мантиссы складываются в одном из модифицированных кодов∗ . Порядком суммы является больший порядок. Если после сложения результат оказывается ненормализованным, то его нормализуют, изменяя соответственно и порядок. Пример. Представить числа X = 9 10 и Y = −37 10 в виде нормализованных двоичных чисел с плавающей точкой и сложить. Результат проверить переведя сумму в десятичную систему. Решение: 1. Переведем числа в двоичную с.с. и нормализуем. X=
9 10 = 10012 = ( 0 .1001 ⋅ 10100 ) 2 ; 110 Y = −37 10 = −1001012 = ( −0 .100101 ⋅ 10 ) 2 . 2. Уравниваем порядки чисел. X=
0 .1001 ⋅ 10100 = 0 . 001001 ⋅ 10110 ; 110 Y = −0 .100101 ⋅ 10 . 3. Переводим мантиссы чисел в модифицированный дополнительный код и складываем их.
mдx о п = 00 , 001001 mдy о п = 11, 011011
...
mдx+о yп = 11 , 100100
1442443 14444444244444443 Знак Знак
m
p
Порядок (7 разрядов)
Мантисса (55 разрядов) 4. Переводим результат в прямой код:
11, 011011 +1 mпXр+ Y = 11, 011100
3.3 Арифметические действия над числами с плавающей точкой. При сложении чисел с плавающей точкой сначала уравниваются порядки слагаемых, а затем складываются мантиссы. Уравнивание порядков заключается в том, что меньший порядок числа увеличивается до большего, при этом соответственно изменяется и
5. Представляем результат в виде ЧПТ и нормализуем его: ∗
Для определенности сложение мантисс будем производить в модифицированном дополнительном восьмиразрядном коде (2 знаковых разряда и 6 разрядов для записи мантиссы).
X + Y = −0. 0111 ⋅10110 = −0 .111 ⋅10101 . 101 Таким образом результат сложения: X + Y = ( −0 .111 ⋅ 10 ) 2 = −2810 .
Таким образом мантисса произведения, записанная в прямом коде имеет вид: ( m
X
⋅ mY ) п р = 1 , 0111100 .
4. Сложим порядки.
p X + p Y = 11 + ( −1) = 10 .
При умножении двух чисел с плавающей точкой их мантиссы перемножаются, а порядки складываются. В арифметическо-логическом устройстве (АЛУ) ЭВМ операция умножения реализуется в виде следующей последовательности действий: 1) Мантиссы, представленные в прямом коде, перемножаются (при этом установка десятичной точки происходит как и при нормальном умножении путем подсчета количества разрядов после точки в обоих множителях). 2) Порядки складываются с применением обратного или дополнительного кодов. 3) Знаки чисел обрабатываются специальной логикой (исключающее или). Пример. Представить числа X = 510 и Y = −0 . 37510 в виде нормализованных двоичных чисел с плавающей точкой и перемножить. Результат проверить переведя произведение в десятичную систему. Решение: 1. Переведем числа в двоичную с.с. и нормализуем.
При выполнении операции деления чисел с плавающей точкой мантиссу делимого делят на мантиссу делителя, а из порядка делимого вычитают порядок делителя. Пример. Представить числа X = 2010 и Y = 0 . 2510 в виде нормализованных двоичных чисел с плавающей точкой и вычислить X / Y . Результат проверить переведя частное в десятичную систему. 1. Переведем числа в двоичную с.с. и нормализуем.
X = 510 = 1012 = (0 .101 ⋅ 1011 ) 2 ; Y = −0 . 37510 = −0 . 0112 = ( −0 .11 ⋅ 10 −1 ) 2 .
p X − pY = 101 − ( −1) = 110 .
2. Запишем мантиссы в восьмиразрядном прямом коде:
mпXр = 0 , 1010000 ;
.101 × .11 101 101 . 01111
X ⋅ Y = ( −0 . 01111 ⋅ 1010 ) 2 = ( −0 .1111 ⋅ 101 ) 2 = −1.87510 .
X = 2010 = 10100 2 = ( 0 .101 ⋅ 10
б) Определим знак произведения. Так как знаки множителей разные (в знаковых разрядах 0 и 1 соответственно), то знаком произведения будет “–” (в знаковом разряде будет 1).
101
)2 ;
−1
Y = 0 . 2510 = 0 . 012 = (0 .1 ⋅ 10 ) 2 . 2. Разделим мантиссы и вычтем порядки. m X / mY = 0 .101 / 0 .1 = 1. 01 ; Таким образом результат деления X/Y = 1. 01 ⋅10110 . 3. Нормализуем результат и переводим в “10” с.с.. X/Y = (1. 01 ⋅ 10
mпY р = 1 , 1100000 . 3. а) Перемножим мантиссы.
Таким образом результат умножения:
) 2 = (0 .101 ⋅ 10111 ) 2 ; X/Y = 1010000 2 = 80 10 . 110
В АЛУ ЭВМ, при выполнении операции деления, деление мантисс и вычитание порядков осуществляется с использованием обратного или дополнительного кодов. Знаки чисел обрабатываются специальной логикой (исключающее или).
Упражнения 3.
1. Представить двоичное число в нормализованном виде и записать в ячейку∗ : а) 110.001; д) 1110.1011;
б) 11100.11; в) –0.0011111; г) –0.0000001011; – е) –0.0110101; ж) 0.000111; з) –11100.001 .
5. Записать двоичные числа X и Y в нормализованном виде. Вычислить частное X/Y (при делении мантисс точность – 6 знаков после точки). Результат записать в нормализованном виде. а) X= 101101.01; Y= –101.01;
б) X= 0.000110101; Y= 0.0000011;
в) X= 0.011011; Y= –10010.1;
2 . Представить десятичное число в виде нормализованного двоичного (точность перевода – 10 цифр в мантиссе нормализованного числа). Записать число в ячейку.
г) X= 0.00001011; д) X= –1010.11; Y= 0.010011; Y= 1100110;
а) –117.375;
б) 94. 6875;
в) 202 .9;
г) –35.325;
Литература.
д) –0.48;
е) 0.22;
ж) –0.0425;
з) 0.02 .
1. Каган Б.М. Электронные вычислительные машины и системы. М.: Энергоатомиздат, 1991.. 2. Савельев А.Я. Прикладная теория цифровых автоматов. М.: Высшая школа, 1983. 3. Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088. М.: Радио и связь, 1987.
3 . Перевести десятичные числа X и Y в двоичную с.с. (точность перевода – 10 цифр в мантиссе нормализованного числа). Записать их в ячейки в нормализованном виде. Вычислить сумму X и Y (суммирование мантисс производить в модифицированном дополнительном 12-ти разрядном коде). Записать результат в ячейку в нормализованном виде. Сравнить результаты полученные в десятичной и двоичной с.с.. а) X= –15.25; Y= 3.75;
б) X= –13.8; Y= –3.2;
в) X= –0.09; Y= 0.55;
г) X= –0.04; Y= –0.26;
д) X= 3.15; Y= –0.4;
е) X= –0 .03; Y= –2 .27 .
4. Записать двоичные числа X и Y в нормализованном виде. Вычислить произведение X·Y. Результат записать в нормализованном виде. а) X= 10011; Y= 11.1 ;
б) X= –1110; Y= 0.0111;
г) X= –0.001101; д) X= 11011.01; Y= 10. 011; Y= 0.010011; ∗
в) X= 0.010101; Y= 0. 00101; е) X= 0.00111011; Y= –0.00011001 .
Во всех упражнениях использовать 16-ти разрядные ячейки.
е) X= 100011; Y= 0. 00101 .