Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Вариант 76
Выполнил:
студент гр. КТбо1-5
Воробьева Е.В.
Проверил:
доцент каф. САПР
Лисяк Н.К.
Таганрог 2017
Техническое задание
А=78,66С; В1= –20; В2= –31; В3=16; С1= –4,25; С2= –15,75.
Задание 1. Для заданного шестнадцатеричного числа A выполнить следующую
последовательность преобразований:
(A) 16 (A) 2 (A) 8 (A) 10.
Десятичное число представить с точностью до 3 знаков после запятой.
Задание 2. Представить заданные десятичные числа
B1, B2, B3
в ЭВМ в форме с фиксированной запятой в формате n = 6 (число разрядов со
знаком) в двоичной системе счисления в прямом, обратном и
дополнительном кодах.
Задание 3. Представить десятичные числа
C1 и C2
в ЭВМ в двоичной системе счисления в форме с плавающей запятой в
заданном формате: m = 5 (число разрядов мантиссы со знаком), k = 4 (число
разрядов порядка со знаком).
Задание 4. Выполнить, используя результаты работы по заданию 2, сложение
чисел с фиксированной запятой:
(B1) + (B3),
представленных в машинном коде со знаком.
Задание 5. Выполнить, используя результаты работы по заданию 2, вычитание
чисел с фиксированной запятой:
(B3) – (B2),
представленных в машинном коде со знаком.
Задание 6. Выполнить, используя результаты работы по заданию 2,
перемножение чисел с произвольными знаками с фиксированной запятой:
(B1) * (B3),
представленных в прямом или дополнительном коде.
Задание 7. Выполнить, используя результаты работы по заданию 3,
арифметическую операцию сложения чисел:
(C1) + (C2),
представленных с плавающей запятой в формате m = 5 со знаком, k = 4 со
знаком.
2
Задание 8. Выполнить, используя результаты работы по заданию 3,
арифметическую операцию вычитания чисел:
(C1) - (C2),
представленных с плавающей запятой в формате m = 5 со знаком, k = 4 со
знаком.
Задание 9. Выполнить, используя результаты работы по заданию 3,
арифметическую операцию умножения чисел:
(C1) * (C2),
представленных с плавающей запятой в формате m = 5 со знаком, k = 4 со
знаком.
Выполнение работы
Таблица 1.
Задание 1. Для заданного шестнадцатеричного числа A Представление
выполнить следующую последовательность шестнадцатеричных
цифр двоичными
преобразований:
тетрадами
(A) 16 (A) 2 (A) 8 (A) 10. Двоичные
Шестн
тетрады
Десятичное число представить с точностью до 3 триады
В
знаков после запятой. 0 0 0 0 0
А=78,66С. 0 0 0 1 1
0 0 1 0 2
Решение 0 0 1 1 3
1. Для перевода числа А из шестнадцатеричной 0 1 0 0 4
системы счисления в двоичную воспользуемся 0 1 0 1 5
таблицей представления шестнадцатеричных цифр 0 1 1 0 6
0 1 1 1 7
двоичными тетрадами (четверками двоичных цифр)
1 0 0 0 8
(Error: Reference source not found). Заменим каждую 1 0 0 1 9
шестнадцатеричную цифру двоичной тетрадой, 1 0 1 0 A
сохранив положение запятой в числе: 1 0 1 1 B
1 1 0 0 C
(A) 1 1 1 0 1 D
7 8 , 6 6 C 1 1 1 0 E
6
(A) 2 011 100 011 011 110 1 1 1 1 F
,
1 0 0 0 0
Таким образом, отбросив незначащие нули слева и справа, получаем:
(A)2 =1111000,0110011011
2. Для перевода числа А из двоичной системы счисления в восьмеричную
также воспользуемся таблицей (Error: Reference source not found), а точнее –
3
ее частью, устанавливающей соответствие между восьмеричными цифрами
и двоичными триадами (тройками цифр). Разобьем двоичное число на
триады вправо и влево от запятой, дополнив при необходимости крайние
триады незначащими нулями (в нашем случае – с обеих сторон) и выполним
замену:
(A) 2 001 11 000 , 011 00 101 100
1 1
(A) 8 1 7 0 , 3 1 5 4
Полученное восьмеричное представление числа А:
(A) 8 =170,3154
3. Для представления числа А в десятичной системе счисления воспользуемся
формулой, отражающей понятие позиционной системы счисления.
Если (А)S = аrаr–1 ... а1а0 , а-1а-2 ..., то
(A)10 = arSr + ar–1Sr–1 +…+ a1S1 + a0S0 + a–1S–1 + a–2S–2 +…,
где S – основание системы счисления в десятичном представлении;
аi – цифры системы счисления с основанием S, выраженные десятичными
числами (i – позиция цифры в числе).
Вычислим десятичное представление числа А, округлив до 3 знаков после
запятой:
(A)10 = 1*82 + 7*81 + 0*80 + 3*8-1 + 1*8-2 + 5*8-3 + 4*8-4 =
= 64 + 56 + 0 + 0,375 + 0,016 + 0,01+0,001 120,402
Ответ: (78,66С)16 = (1111000,0110011011)2 = (170,3154)8 (120,402)10
Задание 2. Представить числа B1, B2, B3 в ЭВМ в форме с фиксированной
запятой в формате n = 6 (число разрядов со знаком) в двоичной системе
счисления в прямом, обратном и дополнительном коде:
B1 = –20; B2 = –31; B3 = +16.
Решение.
Заданные числа являются целыми, поэтому воспользуемся алгоритмом
перевода целых чисел в двоичную систему счисления. Для перевода целого
числа из десятичной системы счисления в двоичную, необходимо данное число
в десятичной системе счисления, а затем получаемые частные последовательно
делить на основание новой (двоичной) системы счисления до тех пор, пока не
получится частное меньше основания новой системы счисления. Последнее
4
частное будет являться старшей цифрой числа в новой системе счисления с
основанием 2, а следующие за ней цифры – остатки от деления – записываются
в последовательности, обратной их получению.
Рассмотрим подробно перевод числа B1 = –20 из десятичной системы
счисления в двоичную.
(–20)10 = (–10100)2.
По аналогии с рассмотренным примером переводим из десятичной
системы счисления в двоичную числа B2 и B3.
Получаем: (B2)2 = – 11111; (B3)2 = + 10000.
Таким образом: (B1)2 = – 10100; (B2)2 = –11111; (B3)2 = +10000.
Прямой код целого числа соответствует обычной записи модуля числа,
размещенной в разрядной сетке заданного размера с выравниванием по правой
границе. Знак числа кодируется двоичной цифрой и размещается в старшем
разряде разрядной сетки.
Числа B1, B2, B3 со знаком в ЭВМ с фиксированной запятой в прямом коде
с разрядностью 6 знаков будут представлены следующим образом:
Знак 24 23 22 21 20
B1пр 1 1 0 1 0 0
B2пр 1 1 1 1 1 1
B3пр 0 1 0 0 0 0
Обратный и дополнительный коды для положительного числа B 3
совпадают с прямым кодом:
Знак 24 23 22 21 20
B3пр 0 1 0 0 0 0
B3обр 0 1 0 0 0 0
B3доп 0 1 0 0 0 0
5
Чтобы представить двоичное отрицательное число в обратном коде, нужно
воспользоваться прямым кодом числа, сохранить в знаковом разряде единицу, а
во всех значащих разрядах единицы заменить нулями, а нули – единицами.
Для построения дополнительного кода отрицательного числа необходимо
прибавить единицу к младшему разряду обратного кода числа.
Отрицательные числа B1 и B2 со знаком в ЭВМ с фиксированной запятой в
обратном и дополнительном кодах будут представлены так:
Знак 24 23 22 21 20
B1пр 1 1 0 1 0 0
B1обр 1 0 1 0 1 1
B1доп 1 0 1 1 0 0
Знак 24 23 22 21 20
B2пр 1 1 1 1 1 1
B2обр 1 0 0 0 0 0
B2доп 1 0 0 0 0 1
6
Переводим целые числа в двоичную систему по алгоритму, описанному в
задании 2.
[С1]цел2 = –100
[С2]цел2 = –1111
Чтобы перевести правильную дробь (дробную часть числа) из десятичной
системы счисления в двоичную необходимо умножить исходную дробь, а затем
дробные части получившихся произведений на основание новой (двоичной)
системы счисления. Умножение выполняется до тех пор, пока не образуется
дробная часть, равная нулю, либо пока не будет достигнута требуемая
точность. Правильная дробь числа в новой системе счисления с основанием 2
формируется в виде целых частей получившихся произведений, записанных
после запятой в порядке их получения.
Находим дробную часть для С1 :
0 , 2 5
* 2
0 , 5 0
* 2
1 , 0 0
Тогда (0,25)10 = (0,01)2. В результате (С1)2 = –100,01.
Для С2 дробная часть равна:
0 , 7 5
* 2
1 , 5 0
* 2
1 , 0 0
Тогда (0,75)10 = (0,11)2. И (С2)2 = –1111,11.
Числа с плавающей запятой в ЭВМ представляются по формуле
X = mx * qP,
где mx – мантисса числа X, определяющая значащие цифры числа (| mx | < 1);
р – порядок числа X;
q – основание системы счисления.
Мантисса m представляет собой правильную дробь, т.е. запятая при
представлении мантиссы фиксируется перед старшим значащим разрядом.
Порядок р – положительное или отрицательное целое число (запятая при
представлении порядка фиксируется после младшего разряда), которое
указывает положение запятой в числе.
7
Порядок р и мантисса m представляются в системе счисления с
основанием q = 2.
Чтобы избежать неоднозначности представления чисел в форме с
плавающей запятой, обеспечить наибольшую точность представления чисел
при заданной разрядности мантиссы, используют представление мантиссы в
нормализованном виде. Модуль нормализованной мантиссы должен
удовлетворять условию
1
≤|m X|<1 .
q
Старший разряд нормализованной мантиссы в q-ичной системе счисления
не должен быть равным нулю. Число с плавающей запятой, мантисса которого
нормализована, тоже называется нормализованным. Двоичное число Х будет
нормализованным, если в старшем разряде мантиссы mх стоит единица.
Мантисса, равная нулю, не может быть нормализована, этот случай
рассматривается как потеря значимости числа.
Запишем числа C1 = (–4,25)10 и C2 = (–15,75)10 в двоичной системе
счисления с плавающей запятой.
(С1)2 = –100,01.
Получаем мантиссу m1 числа C1, установив запятую перед первой
единицей:
m1 = -0,10001.
При этом мы сдвинули запятую влево на три разряда. Следовательно,
порядок числа C1 равен трем:
p1 = (+3)10 = (+11)2.
И представление числа C1 с плавающей точкой имеет вид:
C1 = (–4,25)10 = (–100,01)2 = (–0,10001*2 +11 )2 пл. зап..
Аналогично выполняем вычисления для C2:
(С2)2 = –1111,11,
m2 = – 0,111111,
p2 = (+4)10 = (+100)2.
C2 = (–15,75)10 = (– 1111,11)2 = (–0,111111*2+100 )2 пл. зап.
Заданные числа в заданном формате с плавающей запятой будут
представлены в ЭВМ в следующем виде:
8
Знак 2-1 2-2 2-3 2-4 Знак 22 21 20
Мантисса C1 1 1 0 0 0 Порядок C1 0 0 1 1
Мантисса C2 1 1 1 1 1 Порядок C2 0 1 0 0
С1 : m1пр = 11000, p1пр = 0011,
С2 : m2пр = 11111, p2пр = 0100.
Задание 4. Выполнить, используя результаты работы по заданию 2, сложение
чисел с фиксированной запятой:
(B1) + (B3),
представленных в машинном коде со знаком.
Решение.
B1пр = 110100;
B3пр = 010000.
Выполняем алгоритм сложения:
1. Для выполнения сложения положительное число B3 представляем прямым
кодом, для отрицательного числа B1 используем дополнительный код:
B1доп = 101100; B3пр = 010000.
2. Суммируем полученные коды:
1 0 1 1 0 0
+
0 1 0 0 0 0
1 1 1 1 0 0
3. Анализируем полученный результат на переполнение (анализируем
переносы из старшего значащего разряда и из знакового). Оба
анализируемых переноса отсутствуют, следовательно, переполнения нет,
результат верный.
4. Так как в знаковом разряде находится единица, делаем вывод, что результат
отрицательный. Следовательно, он представлен в дополнительном коде.
Переводим результат суммирования в обратный код (вычитанием единицы
из младшего разряда), затем в прямой код (инвертируя все разряды кода,
кроме старшего – знакового), по которому получаем двоичное число со
знаком:
B1 + B3 = (111100)2доп = (111011) 2обр = (100100) 2пр = (–100)2 = (–4)10.
Проверка: (–20)10 + (+16)10 = (–4)10.
Задание 5. Выполнить, используя результаты работы по заданию 2, вычитание
чисел с фиксированной запятой:
9
(B3) – (B2),
представленных в машинном коде со знаком.
Решение
B2пр = 111111;
B3пр = 010000.
В ЭВМ операция вычитания чисел с произвольными знаками заменяется
операцией алгебраического сложения по формуле
B3 – B2 = B3 + (–B2).
Воспользуемся алгоритмом вычитания:
1. Знак вычитаемого в прямом коде заменяем на противоположный. Так как
число B2 отрицательное, то (–B2) станет положительным.
2. Положительное число (–B2) представляем прямым кодом, изначально
положительное B3 – также прямым:
B3пр = 010000, (–B2)2пр = 011111.
3. Суммируем полученные коды:
0 1 0 0 0 0
+
0 1 1 1 1 1
1 0 1 1 1 1
4. Анализируем полученный результат на переполнение (анализируем
переносы из старшего значащего разряда и из знакового). Зафиксирован
только один анализируемый перенос, что является признаком переполнения,
следовательно, полученный результат неверный.
5. Произведем проверку. В знаковом разряде результата – единица, а значит,
результат суммирования двух положительных чисел – число отрицательное,
что является ошибкой. Результат неверен также и по величине. Переводим
его в двоичное, а затем в десятичное число со знаком:
B3 – B2 = (101111)2пр = (–1111)2 = (–15)10 .
А теперь убедимся в том, что полученный результат неверен, сверив его со
следующим полученным верным значением: (+16)10 – (–31)10 = (+47)10.
Задание 6. Выполнить, используя результаты работы по заданию 2,
перемножение чисел с произвольными знаками с фиксированной запятой:
(B1)*(B3),
представленных в прямом или дополнительном коде.
Решение
10
B1пр = 110100;
B3пр = 010000.
Умножение будем выполнять, начиная с младших разрядов множителя, со
сдвигом суммы частичных произведений вправо при неподвижном множимом.
Перед началом умножения проверим сомножители на равенство нулю. Ни
B1, ни B3 не равны нулю. Поэтому продолжаем умножение.
Выполним умножение в прямом коде.
1. Возьмем модули сомножителей.
|B1| = 010100 – множимое,
|B3 | = 010000 – множитель.
2. Перемножаем модули сомножителей:
0 0 0 0 0 0 0 0 0 0 0 0 исходное значение суммы частичных произведений (Sm)
→ 0 0 0 0 0 0 0 0 0 0 0 0 0-й (младший) разряд множителя (|B3|) равен 0, только сдвиг Sm
→ 0 0 0 0 0 0 0 0 0 0 0 0 1-й разряд |B3| равен 0, только сдвиг Sm
→ 0 0 0 0 0 0 0 0 0 0 0 0 2-й разряд |B3| равен 0, только сдвиг Sm
→ 0 0 0 0 0 0 0 0 0 0 0 0 3-й разряд |B3| равен 0, только сдвиг Sm
0 0 0 0 0 0 0 0 0 0 0 0 Sm после обработки 3-го разряда
+
010100 4-й разряд |B3| равен 1, прибавляем |B1|
→ 0 1 0 1 0 0 0 0 0 0 0 0 Sm, сдвиг на 1 разряд вправо
→ 0 0 1 0 1 0 0 0 0 0 0 0 Sm после обработки 4-го разряда, дополнительный сдвиг
0 0 0 1 0 1 0 0 0 0 0 0 вправо на 1 разряд после умножения на все значащие разряды
множителя для правильной постановки результата в формате 2n
разрядов (или умножение на знаковый разряд)
11
Решение
С1 : m1пр = 11000, p1пр = 0011,
С2 : m2пр = 11111, p2пр = 0100.
1. Выравниваем порядки суммируемых чисел, для этого найдем разность
порядков
р = р1 – р2 = р1 + (– р2)
(р1)пр = 0011;
(– р2)пр = 1100; (– р2)обр = 1011; (– р2)доп = 1100.
0 0 1 1 пр
+
1 1 0 0 доп
1 1 1 1 доп
р доп = 1111; р обр = 1110; р пр = 1001; р = – 1.
Поскольку р < 0, сдвигаем мантиссу числа С1 вправо на один разряд:
m’1пр = m1пр 2-1 = 10100.
Порядок обоих чисел принимаем равным р’1пр = р2пр = 0100.
2. Суммируем мантиссы чисел: m1 + m2.
Мантиссы обоих чисел отрицательны, поэтому представим их в
дополнительном коде.
m’1доп = 11100, m2доп = 10001
1 1 1 0 0 доп
+
1 0 0 0 1 доп
1 0 1 1 0 1 доп
Тогда mрез доп= 01101; ррез пр = р’1 = р2 = 0100.
3. Анализируем результат на нарушение нормализации. Имеет место
нарушение нормализации влево, так как был выполнен только один перенос
из знакового разряда.
Для нормализации результата сдвинем мантиссу на 1 разряд вправо и
увеличим порядок на 1.
m’рез доп = 10110; m’рез пр = 11010; р’рез пр = ррез+1 = 0101.
Сумма чисел С1 и С2 с плавающей запятой в формате m = 5 со знаком,
k = 4 со знаком равна: С1 + С2 = (– 0,1010 . 2101)2= (– 10100)2 = (–20)10.
Проверка: (–4,25)10 + (–15,75)10 = (–20)10.
Задание 8. Выполнить, используя результаты работы по заданию 3,
арифметическую операцию вычитания чисел:
(C1) - (C2),
12
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со
знаком.
Решение
С1 : m1пр = 11000, p1пр = 0011,
С2 : m2пр = 11111, p2пр = 0100.
Операция вычитания отличается от сложения искусственным изменением
знака вычитаемого на обратный:
С1 – С2 = С1 + (– С2).
1. Выравниваем порядки суммируемых чисел, для этого найдем разность
порядков
р = р1 – р2 = р1 + (– р2)
(р1)пр = 0011;
(– р2)пр = 1100; (– р2)обр = 1001; (– р2)доп = 1100.
0 0 1 1 пр
+
1 1 0 0 доп
1 1 1 1 доп
р доп = 1111; р обр = 1110; р пр = 1001; р = – 1.
Поскольку р < 0, сдвигаем мантиссу числа С1 вправо на два разряда:
m’1пр = m1пр 2-2 = 10100.
Порядок обоих чисел принимаем равным р’1пр = р2пр = 0100.
2. Находим разность мантисс чисел: m’1 – m2 = m’1 +(– m2).
Мантисса m’1 отрицательна, поэтому представим ее в дополнительном
коде:
m’1доп = 11100.
Мантисса m2 также отрицательна, следовательно, величина (– m2)
положительна, для ее представления будем использовать прямой код:
(– m2)пр = 01111.
Выполним сложение кодов:
1 1 1 0 0 доп
+
0 1 1 1 1 пр
1 0 1 0 1 1 пр
Тогда mрез пр = 01011; ррез пр = р’1 = р2 = 0100.
3. Анализируем результат на нарушение нормализации. Нарушения
нормализации влево нет, так как при выполнении сложения были
выполнены оба переноса: и в знаковый разряд, и из знакового разряда.
13
Нарушения нормализации вправо также нет, о чем свидетельствует старший
значащий разряд результата, равный единице.
Мы получили нормализованный результат.
mрез пр = 01011; ррез пр = 0100.
С1 – С2 = (+0,1011 * 2100 )2 = (1011)2=(11)10.
Проверка: (–4,25)10 – (–15,75)10 = (11,5)10.
Погрешность объясняется ограниченностью разрядной сетки.
Задание 9. Выполнить, используя результаты работы по заданию 3,
арифметическую операцию умножения чисел:
(C1) * (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со
знаком.
Решение
С1 : m1 пр = 11000, p1 = 0011.
С2 : m2 пр = 11111, p2 = 0100.
1. Найдем произведение мантисс m1 * m2. Прежде всего, проверим их на
равенство нулю. Так как мантиссы чисел С1 и С2 не равны 0, то переходим к
следующему этапу.
2. Умножение мантисс производим методом умножения, начиная с младших
разрядов множителя, со сдвигом суммы частичных произведений вправо при
неподвижном множимом.
Перемножаем модули мантисс, а произведению присваиваем знак «плюс»,
если знаки сомножителей одинаковы, или знак «минус», если знаки разные.
|m1пр| = 01000 – множимое;
|m2пр| = 01111 – множитель.
Перемножаемые дробные числа, поэтому для представления результата
умножения достаточно одинарной разрядности.
14
00000 исходное значение суммы частичных произведений (Sm)
+
01000 0-й (младший) разряд множителя |m2| равен 1, прибавляем |m1|
→ 01000 Sm, сдвиг на 1 разряд вправо
00100 Sm после обработки 0-го разряда
+
01000 1-й разряд | m2| равен 1, прибавляем |m1|
→ 01100 Sm, сдвиг на 1 разряд вправо
00110 Sm после обработки 1-го разряда
+
01000 2-й разряд | m2| равен 1, прибавляем |m1|
→ 01110 Sm, сдвиг на 1 разряд вправо
00111 Sm после обработки 2-го разряда
+
01000 3-й разряд | m2| равен 1, прибавляем |m1|
→ 01111 Sm, сдвиг на 1 разряд вправо
00111 Sm после обработки 3-го разряда
|mрез пр| = 00111.
Так как сомножители имеют одинаковые знаки, то произведению
присваиваем знак «плюс», т.е.
mрез пр = 00111.
Проверка полученной мантиссы на нормализацию показывает, что имеет
место нарушение нормализации вправо (старший разряд мантиссы равен нулю).
Исправим это нарушение, сдвинув мантиссу результата на один разряд
влево, и вычтем единицу из порядка одного из сомножителей, например, p1:
m’рез пр = 01110, p’1пр = p1пр – 1 = 0010.
3. Найдем порядок результата как сумму порядков сомножителей.
р’1пр = 0010; р2пр = 0100; pрез пр = р’1пр + р2пр
0 0 1 0 пр
+
0 1 0 0 пр
0 1 1 0 пр
Переполнения при суммировании порядков нет, так как не было
сформировано ни одного переноса: ни из старшего разряда в знаковый и ни из
знакового разряда.
pрез пр = 0110.
Запишем результат умножения чисел С1 * С2:
mрез пр = 01110, pрез пр = 0110.
С1 * С2 = +0,1110*2+110 = (+111000)2 = (+56)10.
Выполним проверку в десятичной системе счисления:
(–4,25)10 * (–15,75)10 = (+66,9375)10.
15
Погрешность объясняется ограниченностью разрядной сетки.
16