- •1 Мета, завдання і об'єм курсової роботи
- •Підписи до рисунків Times New Roman (Cyr), кегль 12, bold, без абзацного відступу вирівнювання по центру.
- •2 Представлення чисел в комп’ютері
- •3 Арифметичні операції з двійковими числами
- •4 Арифметика чисел з плаваючою комою
- •5 Завдання на курсову роботу
- •6 Приклад розв’язку курсової роботи
5 Завдання на курсову роботу
1 Записати без пропусків свої прізвище, ім’я, по-батькові.
2 Взяти будь-які 16 символів із цієї послідовності. Замість кожного символу записати його молодшу цифру ASCII-коду. Отриману послідовність розбити на дві частини по 8 цифр у кожній. Отримані H-коди розглядати як два четирьохбайтних числа в шістнадцятковій системі числення.
3 Показати розміщення цих чисел у пам'яті комп'ютера.
4 Адреса першого числа записати як <seg>:<offset> у вигляді другого числа.
5 Адресу другого числа отримати збільшенням адреси першого на чотири.
6 Обчислити фізичну адресу пам'яті розміщення першого й другого чисел.
7 Визначити числові значення вихідних шістнадцяткових чисел (перевести вихідні числа в десяткову систему числення). Пояснити процедуру перекладу.
8 Записати двійкове подання вихідних (шістнадцяткових) чисел (перевести їх у двійкову систему числення). Пояснити процедуру переходу.
9 Для наступних арифметичних операцій утворити з вихідних чисел двійкові числа з нульовим старшим битому (якщо старший біт у вихідному числі дорівнює одиниці, то його замінити на нуль).
10 Виконати дії додавання (віднімання) двійкових (шістнадцяткових) чисел у додатковому коді при всіх можливих сполученнях знаків доданків. Перевірити правильність результатів. Пояснити невідповідності, якщо є.
11 Записати значення додатніх і від’ємних десяткових чисел (п. 4) в упакованому й неупакованому форматах. Показати розміщення в пам'яті комп'ютера першого даного з фізичної адреси з п.3.
12 Вихідні двійкові числа (п.2) розглянути як числа із плаваючою комою, записані в базовому форматі одиночної довжини.
13 Обчислити суму, різницю й добуток цих чисел із плаваючою комою. Дати необхідні пояснення за правилами й послідовністю обчислень.
6 Приклад розв’язку курсової роботи
Запишемо прізвище, ім’я, по-батькові без пробілів.
DanyshukVolodymyrPetrovych
Візьмемо перші 16 символів із цієї послідовності і отримаємо послідовність символів OliynechenkoYuriyIgorovych. Вибираємо 16 символів
Oliynekyuriyigor.
Замість кожного символу запишемо його молодшу цифру ASCII-коду F C 9 9 E 5 B 9 5 2 9 9 9 7 F 2
Розіб’ємо отриману послідовність на дві частини по 8 цифр в кожній:
Перше число – F C 9 9 E 5 B 9
Друге число – 5 2 9 9 9 7 F 2
Покажемо розміщення чисел в пам’яті комп’ютера. Берем по два символи кожного числа.
B9 |
E5 |
99 |
FC |
F2 |
97 |
99 |
52 |
Запишемо адрес першого як <seg>:<offset> у вигляді другого числа.
5 2 9 9 : 9 7 F 2
Адрес другого числа отримаємо шляхом збільшення на 4 адреса першого числа.
5 2 9 9 : 9 7 F 6
Обчислимо фізичний адрес пам’яті розміщення першого і другого чисел за формулою <фіз.адреса>=<seg>*p + <offset> , де р=16.
(5 2 9 9)*1 6 + 9 7 F 2 =7 B 1 1 8
(5 2 9 9)*1 6 + 9 7 F 6 =7 B 1 1 C
Переведемо дані числа в десяткову систему числення за формулою (2.4).
Переведемо перше число:
F C 9 9 E 5 B 9 16= 9*160+B*161+5*162+E*163+9*164+9*165+C*166 + F*167== 9+160+1280+57344+589824+9437184+20132692+4026531840=4056750333
Переведемо друге число:
5 2 9 9 9 7 F 216 = 2*160+F*161+7*162+9*163+9*164+9*165+2*166+5*167=
= 2+240+1792+36864+589824+9437184+33554432+1342177280=1385797618
Переведемо дані шістнадцяткові числа в двійкову систему числення, замінивши кожен символ H-коду на 4 цифри двійкового коду.
Переведемо перше число:
F16 =1111 C16 =1100 916 =1001 916 =1001
E16 =1110 516 =0101 B16 =1011 916 =1001
Отримаємо перше число: F C 9 9 E 5 B 916= 11111100100110011110010110111001
Переведемо друге число:
516 =0101 216 =0010 916 =1001 916 =1001
916 =1001 716 =0111 F16 =1111 216 =0010
Отримаємо друге число: 5 2 9 9 9 7 F 216= 01010010100110011001011111110010
Для наступних операцій утворимо з вихідних чисел двійкові числа з нульовим старшим бітом. У першому числі старший біт дорівнює 0 тому нічого не змінюємо. У другому числі старший біт дорівнює 1 тому замінимо його на 0. Отримаємо:
а1 = 011111001001100111100101101110012
а2 = 010100101001100110010111111100102
Виконаємо додавання (віднімання) двійкових чисел в додатковому коді при всіх можливих сполученнях знаків. Представимо числа в додатковому коді.
Після переведення чисел отримаємо:
+а1= 011111001001100111100101101110012
+а2= 010100101001100110010111111100102
-а1= 100000110110011000011010010001112
-а2= 101011010110011001101000000011102
Виконаємо додавання а1+а2
01111100100110011110010110111001
+
01010010100110011001011111110010
11001111001100110111110110101011
Виконаємо дію а1-а2=а1+(-а2)
01111100100110011110010110111001
+
10101101011001100110100000001110
100101010000000000100110111000111
Виконаємо дію а2-а1=а2+(-а1)
01010010100110011001011111110010
+
10000011011001100001101001000111
11010101111111111011001000111001
Виконаємо дію -а1-а2=-а1+(-а2)
10000011011001100001101001000111
+
10101101011001100110100000001110
100110000110011001000001001010101
Виконаємо перевірку отриманих результатів. Додамо і віднімемо числа а1 і а2 при всіх можливих сполученнях знаків в десятковій системі числення.
а1 = 209046060110
а2 = 138579761810
Виконаємо дію а1+а2 = 2090460601+1385797618=3476258219.
Результат переведемо в двійкову систему числення і запишемо його у
додатковому коді:
347625821910 = 110011110011001101111101101010112
Даний результат суми чисел +а1 і +а2 в додатковому коді співпав з результатом отриманим додаванням цих чисел в десятковій системі числення
Виконаємо дію а1- а2= 2090460601 – 1385797618 = 704662983
Результат переведемо в двійкову систему числення і запишемо його у додатковому коді:
70466298310 = 1010100000000001001101110001112
Виконаємо дію а2 – а1 = 1385797618 – 2090460601 = - 704662983
Результат переведемо в двійкову систему числення і запишемо його в додатковому коді:
- 70466298310 = 110101011111111110110010001110012
Даний результат співпав з додатковим кодом різниці чисел +а1 – а2, отриманий швидше.
Виконаємо дію –а2 – а1 = – 1385797618 – 2090460601 = - 3476258219.
Результат переведемо в двійкову систему числення і запишемо його в додатковому коді :
- 347625821910 = 1001100001100110010000010010101012
Переведемо числа а1 і а2 в десяткову систему числення.
а1 = 209046060110
а2 = 138579761810
Запишемо числа в запакованому форматі.
Число +а1 в запакованому форматі має вигляд:
0 0000 |
1100 |
0010 |
0000 |
1001 |
0000 |
0100 |
0110 |
0000 |
0110 |
0000 |
0001 |
де молодша тетрада 11002 = С16 старшого байта – знак плюс. Тетради решта байтів– цифри числа.
Число +а2 в запакованому форматі має вигляд:
0 0000 |
1100 |
0001 |
0011 |
1000 |
0101 |
0111 |
1001 |
0111 |
0110 |
0001 |
1000 |
де молодша тетрада 11002 = С16 старшого байта – знак плюс. Тетради решта байтів– цифри числа.
Число –а1 в запакованому форматі має вигляд:
0 0000 |
1101 |
0010 |
0000 |
1001 |
0000 |
0100 |
0110 |
0000 |
0110 |
0000 |
0001 |
де молодша тетрада 11012 = D16 старшого байта – знак мінус. Тетради решта байтів– цифри числа.
Число –а2 в запакованому форматі має вигляд:
0 0000 |
1101 |
0001 |
0011 |
1000 |
0101 |
0111 |
1001 |
0111 |
0110 |
0001 |
1000 |
де молодша тетрада 11012 = D16 старшого байта – знак мінус. Тетради решта байтів– цифри числа.
Покажемо розміщення в пам’яті комп’ютера першого даного з фізичної адреси яким є друге число.
-
0000
0001
0000
0110
0100
0110
1001
0000
0010
0000
0000
1100
Запишемо числа в не упакованому форматі.
Число +а1 в не упакованому форматі має вигляд:
209046060110
2B |
32 |
30 |
39 |
30 |
34 |
36 |
30 |
36 |
30 |
31 |
де байт 2В – знак плюс. Інші байти – цифри.
Число +а2 в не упакованому форматі має вигляд:
138579761810
2В |
31 |
33 |
38 |
35 |
37 |
39 |
37 |
36 |
31 |
38 |
Покажемо розміщення в пам'яті комп’ютера першого даного з фізичної адреси, котрим є друге число.
209046060110
-
0001
0010
0001
0000
0001
1001
0001
0000
0001
0100
0001
0110
0001
0000
0001
0110
0001
0000
0001
0001
Вихідні двійкові числа а1 і а2 розглянемо як числа із плаваючою комою, що записані в базовому форматі одиничної довжини.
А1 в базовому форматі одиничної довжини буде виглядати:
0 11111001 00110011110010110111001
А2 в базовому форматі одиничної довжини буде виглядати:
0 10100101 00110011001011111110010
Для обчислення суми і різниці цих чисел з плаваючою комою, постараємося вирівняти порядки, так як додавати або віднімати мантиси чисел ми маємо право в тому випадку, коли порядки чисел рівні.
Різниця порядків чисел а1 і а2 рівна:
1010100 = 8410
В даному випадку при вирівнюванню мантиси меншого числа а2 по порядку більшого числа а1, тобто при зміщенню мантиси числа а2 на 84 порядок вправо, мантиса числа а2 перетвориться в нуль, відповідно, результатом суми чисел а1+а2 і різниці чисел а1–а2 буде число а1, тобто а1+а2=а1 і а1-а2=а1, тобто
0 11111001 00110011110010110111001
Виконаємо множення мантиси чисел, не забувши про прихований біт.
1.00110011110010110111001
*
1.00110011001011111110010
00000000000000000000001001100111100101101110010
00000000000000000001001100111100101101110010000
00000000000000000010011001111001011011100100000
00000000000000000100110011110010110111001000000
00000000000000001001100111100101101110010000000
00000000000000010011001111001011011100100000000
00000000000000100110011110010110111001000000000
00000000000001001100111100101101110010000000000
00000000000100110011110010110111001000000000000
00000000100110011110010110111001000000000000000
00000001001100111100101101110010000000000000000
00001001100111100101101110010000000000000000000
00010011001111001011011100100000000000000000000
10011001111001011011100100000000000000000000000
10111000101010110100011100011000100011111100010
Для визначення місця коми необхідно скласти кількість знаків після коми в вхідних числах і пересунути кому на цю кількість знаків. Кількість знаків після коми в обох числах разом 46. Пересунувши кому на 46 получимо результат множення:
1.0111000101010110100011100011000100011111100010
Для запису його в базовому форматі одиничної довжини необхідно, записати отриманий результат в вигляді нормалізованої мантиси. Для нормалізації необхідно пересунути кому на один знак вліво і до порядку числа добавити одиницю (одиницю добавимо, коли будемо працювати з порядком результату) і відкинути всі знаки після коми окрім перших двадцяти трьох. Тоді мантиса числа із скритим бітом буде виглядати наступним чином.
Для визначення експоненти результату, додамо результати в десятковій системі числення. Для цього переведемо експоненти чисел в десяткову систему числення, а потім перетворимо їх в порядки по правилу П = Е –127, де Е – експонента числа, а П – його порядок.
Експонента першого числа рівна:
Е1 = 111110012 = 249.
Тоді порядок першого числа буде П1 = Е1 – 127 = 122.
Експонента другого числа рівна:
Е2 = 101001012 = 165
Тоді порядок першого числа буде П2 = Е2 – 127 = 38
Порядок результату рівний сумі порядків множених чисел
П = П1 + П2 = 122 +38= 160
Експонента результату рівна П + 127 = 160 + 127 = 287. Добавимо до експоненти одиницю, яка була отримана в результаті нормалізації мантиси.
Тоді Е =287 + 1 = 288.
Переведемо E в двійкову систему числення Е = 28810 = 1001000002.
Знак результату визначається додаванням знакових бітів перемножених по модулю два. Тоді знаковий біт результату буде (0 + 0) mod 2 = 0.
Отже, результат множення в базовому форматі одиничної довжини буде виглядати наступним чином:
0 100100000 01110001010101101000111.
ПЕРЕЛІК РЕКОМЕНДОВАНИХ ДЖЕРЕЛ
1 Таненбаум Є. Архітектура комп’ютера. – СПб.: Питер, 2002. – 704 с.
2 А.Я.Савельев. Арифметические и логические основы цифровых автоматов. М.: Высшая школа. 1980.
3 А.Я.Савельев. Прикладная теория цифровых автоматов. М.:Высшая школа. 1987.
4 Г.Н.Соловьев. Арифметические устройства ЭВМ. М.: Энергия. 1978.
5 Я.Чу. Организация ЭВМ и микропрограммирование. М.: Мир. 1975.
9 А.М.Шауман. Основы машинной арифметики. Л.: Из-во Ленинградского университета. 1979.
10 Б.М.Каган. Электронные вычислительные машины и системы. М.: Энергоатомиздат. 1991.
11 М.А.Карцев. Арифметика цифровых машин. М.: Наука. 1969.
12 Ф.Е.Темников, В.А.Афонин, В.И.Дмитриев. Теоретические основы информационной техники. М.: Энергия. 1971.
13 Микропроцессоры. В 3-х кн. Кн. 1. Архитектура и проектирование микро-ЭВМ. Организация вычислительных процессов: Учеб. для втузов / Под. редакцией Л.Н. Преснухина. М.: Высш. шк., 1986. – 495 с.: ил.
