Вы находитесь на странице: 1из 12

Министерство образования и науки Российской Федерации

Федеральное государственное автономное образовательное учреждение


высшего образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
(ФГАОУ ВО «ЮФУ»)

Институт компьютерных технологий и информационной безопасности

Типовое расчетное задание


по курсу
ИНФОРМАТИКА

Вариант 378

Выполнил:
Студент гр. КТсо1-6
Гуторенко В.А.

Проверил:
доцент кафедры БИТ
Ельчанинова Н.Б.

Таганрог 2019
Техническое задание
А=2C0,1F; В1=-10; В2= -5; В3=16; С1= –22,5; С2= –9,25
Задание 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),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.
Задание 8. Выполнить, используя результаты работы по заданию 3, арифметическую
операцию вычитания чисел:
(C1) - (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.

2
Задание 9. Выполнить, используя результаты работы по заданию 3, арифметическую операцию
умножения чисел представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со
знаком.
(C1) * (C2),
Выполнение работы
Задание 1. Для заданного шестнадцатеричного числа A выполнить следующую
последовательность преобразований:
Таблица 1.
(A) 16  (A) 2  (A) 8  (A) 10. Представление
Десятичное число представить с точностью до 3 знаков после шестнадцатеричных
цифр двоичными
запятой. тетрадами
А=2C0,1F Двоичные

Шестна
Решение тетрады
триады

В
Для перевода числа А из шестнадцатеричной системы счисления в
двоичную воспользуемся таблицей представления 0 0 0 0 0
0 0 0 1 1
шестнадцатеричных цифр двоичными тетрадами (четверками 0 0 1 0 2
двоичных цифр) (Error: Reference source not found). Заменим 0 0 1 1 3
каждую шестнадцатеричную цифру двоичной тетрадой, сохранив 0 1 0 0 4
положение запятой в числе: 0 1 0 1 5
0 1 1 0 6
(A) 16 2 C 0 , 1 F 0 1 1 1 7
(A) 2  001 110 000 000 111
, 1 0 0 0 8
0 0 0 1 1
Таким образом, отбросив незначащие нули слева и справа, 1 0 0 1 9
1 0 1 0 A
получаем:
1 0 1 1 B
(A)2 =1011000000,00011111
1 1 0 0 C
1. Для перевода числа А из двоичной системы счисления в 1 1 0 1 D
восьмеричную также воспользуемся таблицей (Error: Reference 1 1 1 0 E
source not found), а точнее – ее частью, устанавливающей 1 1 1 1 F
соответствие между восьмеричными цифрами и двоичными
триадами (тройками цифр). Разобьем двоичное число на триады вправо и влево от запятой,
дополнив при необходимости крайние триады незначащими нулями.
(A) 2  001 01 000 00 , 000 11 110
1 0 1
(A) 8  1 3 0 0 , 0 7 6
Полученное восьмеричное представление числа А:
(A) 8 =1300,076
2. Для представления числа А в десятичной системе счисления воспользуемся формулой,
отражающей понятие позиционной системы счисления.
Если (А)S = аrаr–1 ... а1а0 ,  а-1а-2 ..., то
(A)10 = arSr + ar–1Sr–1 +…+ a1S1 + a0S0 + a–1S–1 + a–2S–2 +…,
где S – основание системы счисления в десятичном представлении;

3
аi – цифры системы счисления с основанием S, выраженные десятичными числами (i –
позиция цифры в числе).
Вычислим десятичное представление числа А, округлив до 3 знаков после запятой:
(A)10 = 1*83 +3*82 +7*8−2+6*8−3=704,12109375704,121

Ответ: (2C0,1F)16 = (1011000000,00011111)2 = (1300,076)8  (704,121)10

Задание 2. Представить числа B1, B2, B3 в ЭВМ в форме с фиксированной запятой в формате
n = 6 (число разрядов со знаком) в двоичной системе счисления в прямом, обратном и
дополнительном коде:
B1 = –10; B2 = –5; B3 = +16.
Решение.
Заданные числа являются целыми, поэтому воспользуемся алгоритмом перевода целых
чисел в двоичную систему счисления. Для перевода целого числа из десятичной системы
счисления в двоичную, необходимо данное число в десятичной системе счисления, а затем
получаемые частные последовательно делить на основание новой (двоичной) системы
счисления до тех пор, пока не получится частное меньше основания новой системы счисления.
Последнее частное будет являться старшей цифрой числа в новой системе счисления с
основанием 2, а следующие за ней цифры – остатки от деления – записываются в
последовательности, обратной их получению.
Рассмотрим подробно перевод числа B1 = -10 из десятичной системы счисления в
двоичную. После действий остаётся только добавить знак, который и был.

(-10)10 = (-1010)2.
По аналогии с рассмотренным примером переводим из десятичной системы счисления в
двоичную числа B2 и B3.
Получаем: (B2 )2 = – 101; (B3 )2 =10000.
Таким образом: (B1)2 = -1010; (B2 )2 = –101; (B3 )2 = 10000.
Прямой код целого числа соответствует обычной записи модуля числа, размещенной в
разрядной сетке заданного размера с выравниванием по правой границе. Знак числа кодируется
двоичной цифрой и размещается в старшем разряде разрядной сетки.
Числа B1, B2, B3 со знаком в ЭВМ с фиксированной запятой в прямом коде с разрядностью
6 знаков будут представлены следующим образом:

Знак 24 23 22 21 20
B1пр 1 0 1 0 1 0
B2пр 1 0 0 1 0 1
B3пр 0 1 0 0 0 0

4
Обратный и дополнительный коды для положительного числа 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
Чтобы представить двоичное отрицательное число в обратном коде, нужно
воспользоваться прямым кодом числа, сохранить в знаковом разряде единицу, а во всех
значащих разрядах единицы заменить нулями, а нули – единицами.
Для построения дополнительного кода отрицательного числа необходимо прибавить
единицу к младшему разряду обратного кода числа.
Отрицательные числа B1 и B2 со знаком в ЭВМ с фиксированной запятой в обратном и
дополнительном кодах будут представлены так:
Знак 24 23 22 21 20
B1пр 1 0 1 0 1 0
B1обр 1 1 0 1 0 1
B1доп 1 1 0 1 1 0

Знак 24 23 22 21 20
B2пр 1 0 0 1 0 1
B2обр 1 1 1 0 1 0
B2доп 1 1 1 0 1 1

Ответ: числа B1 , B2 и B3 в машинном представлении в прямом, обратном и


дополнительном кодах имеют следующий вид:
B1пр = 101010 B2пр = 100101 B3пр = 010000
B1обр = 110101 B2обр = 111010 B3обр = 010000
B1доп = 110110 B2доп = 111011 B3доп = 010000
Задание 3. Представить десятичные числа
C1 и C2
в двоичной системе счисления в форме с плавающей запятой в заданном формате: m = 5
(число разрядов мантиссы со знаком), k = 4 (число разрядов порядка со знаком).
C1 = (–22,5)10; C2 = (–9,25)10.
Решение
Заданные числа представляют собой совокупность целой и дробной части в десятичной
системе счисления и называются смешанными. При переводе смешанных чисел из десятичной
системы счисления в двоичную необходимо перевести отдельно целую и дробную части по
правилам перевода целых чисел и правильных дробей, а затем оба полученных результата
объединить в одно смешанное число в двоичной системе счисления.
Переводим целые числа в двоичную систему по алгоритму, описанному в задании 2.
[С1]цел2 = –10110
[С2]цел2 = –1001

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

Находим дробную часть для С1 :


0 , 5
* 2
1 , 0

Тогда (0,5)10 = (0,1)2. В результате (С1)2 = –10110,1.


Для С2 дробная часть равна:
0 , 2 5
* 2
0 , 5 0
* 2
1 , 0 0
Тогда (0,25)10 = (0,01)2. И (С2)2 = –1001,01.
Числа с плавающей запятой в ЭВМ представляются по формуле
X = mx * qP,
где mx – мантисса числа X, определяющая значащие цифры числа (| mx | < 1);
р – порядок числа X;
q – основание системы счисления.
Мантисса m представляет собой правильную дробь, т.е. запятая при представлении
мантиссы фиксируется перед старшим значащим разрядом.
Порядок р – положительное или отрицательное целое число (запятая при представлении
порядка фиксируется после младшего разряда), которое указывает положение запятой в числе.
Порядок р и мантисса m представляются в системе счисления с основанием q = 2.
Чтобы избежать неоднозначности представления чисел в форме с плавающей запятой,
обеспечить наибольшую точность представления чисел при заданной разрядности мантиссы,
используют представление мантиссы в нормализованном виде. Модуль нормализованной
мантиссы должен удовлетворять условию

1
≤|m X|<1 .
q
Старший разряд нормализованной мантиссы в q-ичной системе счисления не должен быть
равным нулю. Число с плавающей запятой, мантисса которого нормализована, тоже называется
нормализованным. Двоичное число Х будет нормализованным, если в старшем разряде
мантиссы mх стоит единица. Мантисса, равная нулю, не может быть нормализована, этот случай
рассматривается как потеря значимости числа.
6
Запишем числа C1 = (–22,5)10 и C2 = (–9,25)10 в двоичной системе счисления с плавающей
запятой.
(С1)2 = –10110,1.
Получаем мантиссу m1 числа C1, установив запятую перед первой единицей:
m1 = –0,101101.
При этом мы сдвинули запятую влево на пять разрядов. Следовательно, порядок числа C 1
равен пяти:
p1 = (+5)10 = (+101)2.
И представление числа C1 с плавающей точкой имеет вид:
C1 = (–22,5)10 = (–10110,1)2 = (–0,101101*10 +101 )2 пл. зап..
Аналогично выполняем вычисления для C2:
(С2)2 = –1001,01.
m2 = – 0,100101.
p2 = (+4)10 = (+100)2.
C2 = (–9,25)10 = (–1001,01)2 = (– 0,100101*10+100 )2 пл. зап.
Заданные числа в заданном формате с плавающей запятой будут представлены в ЭВМ в
следующем виде:
Знак 2-1 2-2 2-3 2-4 Знак 22 21 20
Мантисса C1 1 1 0 1 1 Порядок C1 0 1 0 1
Мантисса C2 1 1 0 0 1 Порядок C2 0 1 0 0
С1 : m1пр = 11011, p1пр = 0101,
С2 : m2пр = 11001, p2пр = 0100.
Задание 4. Выполнить, используя результаты работы по заданию 2, сложение чисел с
фиксированной запятой:
(B1) + (B3),
представленных в машинном коде со знаком.
Решение.
B1пр = 101010;
B3пр = 010000.
Выполняем алгоритм сложения:
1. Для выполнения сложения положительное число B3 представляем прямым кодом, для
отрицательного числа B1 используем дополнительный код:
B1доп = 110110; B3пр = 010000.
2. Суммируем полученные коды:
0 1 0 0 0 0
+
1 1 0 1 1 0
1 0 0 0 1 1 0
3. Анализируем полученный результат на переполнение (анализируем переносы из старшего
значащего разряда и из знакового). Оба анализируемых переноса присутствуют,
следовательно, переполнения нет, результат верный. Т.к. вычисление проводилось с
дополнительным кодом, перенесённую из знакового разряда единицу игнорируем.

7
4. Так как в знаковом разряде находится ноль, делаем вывод, что результат положительный.
Следовательно, он представлен в прямом коде. B1 + B3 = (000110)2пр= (110)2 = (6)10.
Проверка: (-10)10 + (16)10 = (6)10.
Задание 5. Выполнить, используя результаты работы по заданию 2, вычитание чисел с
фиксированной запятой:
(B3) – (B2),
представленных в машинном коде со знаком.
Решение
B2пр = 100101;
B3пр = 010000.
В ЭВМ операция вычитания чисел с произвольными знаками заменяется операцией
алгебраического сложения по формуле
B3 – B2 = B3 + (–B2).
Воспользуемся алгоритмом вычитания:
1. Знак вычитаемого в прямом коде заменяем на противоположный. Так как число B 2
отрицательное, то (–B2) станет положительным.
2. Положительное число (–B2) представляем прямым кодом, положительное B3 – тоже прямым:
B3пр = 010000, (–B2)2пр = 000101.
3. Суммируем полученные коды:
0 1 0 0 0 0
+ 0 0 0 1 0 1
0 1 0 1 0 1
3. Анализируем полученный результат на переполнение (анализируем переносы из старшего
значащего разряда и из знакового). Оба анализируемых переноса отсутствуют,
следовательно, переполнения нет, результат верный.
4. В знаковом разряде результата – 0, следовательно, результат суммирования положительный
и представлен в прямом коде. Переводим его двоичное, а затем в десятичное число со
знаком:
B3 – B2 = (010101)2пр = (+10101)2 = (+21)10 .
Проверка: (16)10 – (–5) = (+21)10.
Задание 6. Выполнить, используя результаты работы по заданию 2, перемножение чисел с
произвольными знаками с фиксированной запятой:
(B1)*(B3),
представленных в прямом или дополнительном коде.
Решение
B1пр = 101010;
B3пр = 010000.
Умножение будем выполнять, начиная с младших разрядов множителя, со сдвигом
суммы частичных произведений вправо при неподвижном множимом.

8
Перед началом умножения проверим сомножители на равенство нулю. Ни B1, ни B3 не
равны нулю. Поэтому продолжаем умножение.
Выполним умножение в прямом коде.
1. Возьмем модули сомножителей.
|B1| = 001010 – множимое,
|B3 | = 010000 – множитель.
2. Перемножаем модули сомножителей:
→ 000000000000 исходное значение суммы частичных произведений (Sm)
→ 000000000000 0-й (младший) разряд множителя (|B3|) равен 0, только сдвиг
→ 000000000000 1-й разряд множителя (|B3|) равен 0, только сдвиг
→ 000000000000 2-й разряд множителя (|B3|) равен 0, только сдвиг
+ 000000000000 3-й разряд множителя (|B3|) равен 0, только сдвиг
001010 4-й разряд множителя (|B3|) равен 1, прибавляем 001010
→ 001010000000 Сдвиг
→ 000101000000 Последний разряд множителя (|B3|) равен 0, только сдвиг
000010100000
Получаем произведение модулей сомножителей в прямом коде:
|B1| *|B3 | = (000010100000)2пр.
Одновременно с умножением на знаковый разряд определяем знак произведения как
сумму по модулю 2 знаков сомножителей: 1 + 0 = 1.
Произведение B1 * B3 = (100010100000)2пр.
Проверка: (-10)10 * (+16)10 = (– 160)10.
(100010100000)2пр = – (2+7 + 2+5 )10 = – (128 + 32 )10= (–160)10.
Задание 7. Выполнить, используя результаты работы по заданию 3, арифметическую
операцию сложения чисел
(C1) + (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.
Решение
С1 : m1пр = 11011, p1пр = 0101,
С2 : m2пр = 11001, p2пр = 0100.
1. Выравниваем порядки суммируемых чисел, для этого найдем разность порядков
р = р1 – р2 = р1 + (– р2)
(р1)пр = 0101;
(– р2)пр = 1100; (– р2)обр = 1011; (– р2)доп = 1100.
0 1 0 1 пр
+
1 1 0 0 доп
1 0 0 0 1 пр
р пр = 0001; р = 1.
Поскольку р >0, сдвигаем мантиссу числа С2 вправо на один разряд:
m’2пр = m2пр  2-1 = 10100.
Порядок обоих чисел принимаем равным р’1пр = р2пр = 0101.
2. Суммируем мантиссы чисел: m1 + m2.
Мантиссы обоих чисел отрицательны, поэтому представим их в дополнительном коде.
m1доп = 10101, m’2доп = 11100
9
1 0 1 0 1 доп
+
1 1 1 0 0 доп
1 1 0 0 0 1 доп
3. Анализируем результат на нарушение нормализации. Нарушения нормализации влево нет,
так как при выполнении сложения были выполнены оба переноса: и в знаковый разряд, и из
знакового разряда. Нарушения нормализации вправо также нет, о чем свидетельствует
старший значащий разряд результата, равный нулю. mрез пр =11111;
Сумма чисел С1 и С2 с плавающей запятой в формате m = 5 со знаком,
k = 4 со знаком равна: С1 + С2 = (– 0,1111 . 2101)2= (–11110)2 = (–30)10.
Проверка: (–22,5)10 + (–9,25)10 = (–31,75)10.
Небольшая разница в результатах объясняется ограниченностью разрядной сетки.
Задание 8. Выполнить, используя результаты работы по заданию 3, арифметическую
операцию вычитания чисел:
(C1) - (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.
Решение
С1 : m1пр = 11011, p1пр = 0101,
С2 : m2пр = 11001, p2пр = 0100.
Операция вычитания отличается от сложения искусственным изменением знака
вычитаемого на обратный:
С1 – С2 = С1 + (– С2).
1. Выравниваем порядки суммируемых чисел, для этого найдем разность порядков
р = р1 – р2 = р1 + (– р2)
(р1)пр = 0101;
(– р2)пр = 1100; (– р2)обр = 1011; (– р2)доп = 1100.
0 1 0 1 пр
+
1 1 0 0 доп
1 0 0 0 1 пр
р пр = 0001; р = 1.
Поскольку р >0, сдвигаем мантиссу числа С2 вправо на один разряд:
m’2пр = m2пр  2-1 = 10100.
Порядок обоих чисел принимаем равным р’1пр = р2пр = 0101.
2. Находим разность мантисс чисел: m’1 – m2 = m’1 +(– m2).
Мантисса m’1 отрицательна, поэтому представим ее в дополнительном коде:
m’1доп = 10101.
Мантисса m2 также отрицательна, следовательно, величина (– m2) положительна, для ее
представления будем использовать прямой код:
(– m2)пр =00100.
Выполним сложение кодов
1 0 1 0 1 доп
+
0 0 1 0 0 пр
1 1 0 0 1 доп

10
3. Анализируем результат на нарушение нормализации. Нарушения нормализации влево нет,
так как при выполнении сложения не было выполнено ни переноса в знаковый разряд, ни из
знакового разряда. Но присутствует нарушение нормализации вправо, т. к. старший
значащий разряд совпадает со знаковым. Произведём 1 сдвиг влево и уменьшим порядок на
1.
ррез пр =0100; mрез доп =10010; mрез об =10001; mрез пр =11110
Мы получили нормализованный результат.
mрез пр = 11110; ррез пр = 0100.
С1 – С2 = (-0,1110 * 10100 )2 = (1110)2=(14)10.
Проверка: (-22,5)10 – (–9,25)10 = (13,25)10.
Погрешность объясняется ограниченностью разрядной сетки.
Задание 9. Выполнить, используя результаты работы по заданию 3, арифметическую
операцию умножения чисел:
(C1) * (C2),
представленных с плавающей запятой в формате n = 5 со знаком, k = 4 со знаком.
Решение
С1 : m1пр = 11011, p1пр = 0101,
С2 : m2пр = 11001, p2пр = 0100.
1. Найдем произведение мантисс m1 * m2. Прежде всего, проверим их на равенство нулю. Так
как мантиссы чисел С1 и С2 не равны 0, то переходим к следующему этапу.
2. Умножение мантисс производим методом умножения, начиная с младших разрядов
множителя, со сдвигом суммы частичных произведений вправо при неподвижном
множимом.
Перемножаем модули мантисс, а произведению присваивает знак «плюс», если знаки
сомножителей одинаковы, или знак «минус», если знаки разные.
|m1пр| = 01011 – множимое;
|m2пр| = 01001 – множитель.
Перемножаемые дробные числа, поэтому для представления результата умножения
достаточно одинарной разрядности.
+ 00000 исходное значение суммы частичных произведений
01011 0-й (младший) разряд множителя |m2| равен 1, прибавляем |m1|
→ 01011 сдвиг на 1 разряд вправо
→ 00101 1-й разряд | m2| равен 0, только сдвиг
→ 00010 2-й разряд | m2| равен 0, только сдвиг
+ 00001 3-й разряд | m2| равен 1, прибавляем |m1|
01011
→ 01100 сдвиг на 1 разряд вправо
00110
|mрез пр| = 00110.

Т. к. 1⊕1=0, то произведение будет положительным.

mрез пр = 00110.
Проверка полученной мантиссы на нормализацию показывает, что имеет место
нарушение нормализации вправо (старший разряд мантиссы равен нулю).
11
Исправим это нарушение, сдвинув мантиссу результата на один разряд влево, и вычтем
единицу из порядка одного из сомножителей, например, p1:
m’рез пр = 01100, p’1пр = p1пр – 1= 0100.
3. Найдем порядок результата как сумму порядков сомножителей.
р’1пр = 0100; р2пр = 0100; pрез пр = р’1пр + р2пр
0 1 0 0 пр
+
0 1 0 0 пр
0 1 0 0 0 пр
При суммировании порядков, обнаружено переполнение разрядной сетки порядка. ЭВМ
не будет производить дальнейшие вычисления.
Если бы формат представления порядка чисел с плавающей запятой был на 1 больше,
тогда pрез пр =01000
Запишем результат умножения чисел С1 * С2:
mрез пр = 01100, pрез пр = 01000.
С1 * С2 = +0,1100*10+1000 = (+11000000)2 = (+192)10.
Выполним проверку в десятичной системе счисления:
(–22,5)10 * (–9,25)10 = (–124,78125)10.
Погрешность объясняется ограниченностью разрядной сетки.

12