Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у навчальному комп’ютері - симуляторі DeComp.

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2006
Тип роботи:
Методичні вказівки до лабораторної роботи
Предмет:
Організація та функціонування комп’ютерів

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет “Львівська політехніка” Кафедра ЕОМ Методичні вказівки до лабораторної роботи № 5 з дисципліни “Організація та функціонування комп’ютерів” Тема: Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у навчальному комп’ютері - симуляторі DeComp. Укладач: ст.викл. Кудрявцев О.Т. Львів 2006 Тема: Дослідження виконання арифметичних операцій з числами у форматі з фіксованою комою у симуляторі DeComp. Мета роботи: Вивчити подання і застосування додатних та від’ємних чисел у арифметиці з фіксованою комою. Навчитись розробляти алгоритми виконання операції віднімання з використанням обернених, доповнювальних і модифікованих кодів. Навчитись розробляти алгоритми виконання операції множення додатних і від’ємних двійкових чисел. 1. Теоретична частина. 1.1. Додавання і віднімання двійкових чисел з фіксованою комою Простота виконання арифметичних дій є важливою особливістю двійкової системи числення. Але у дійсності при виконанні арифметичних операцій потрібно ще додатково враховувати знаки чисел, що обробляються, діапазон та форму подання чисел для виконання певних розрахунків у конкретному комп’ютері. Відомо, що одним з можливих шляхів виконання операції віднімання є заміна знаку числа, яке віднімається, на протилежний і додавання його до зменшуваного. А - В = А + ( - В) Таким чином операцію арифметичного віднімання замінюють операцією алгебраїчного додавання, яку можна виконати за допомогою двійкових суматорів. Нагадаємо, що від’ємні числа у комп’ютері подаються у прямому, доповняльному і оберненому кодах. Числа зберігаються у прямому коді, перед виконанням обчислень перетворюються у потрібний – доповняльний або обернений - код і після виконання обчислень знову перетворюються у прямий код. При реалізації заміни віднімання додаванням другий доданок у наведенному виразі переводиться у доповняльний код шляхом інвертування та додавання одиниці у молодший розряд. (Треба пам’ятати, що доповняльний код додатного числа співпадає з прямим кодом). A –B = A + EMBED Equation.3 +1 При додаванні двох двійкових чисел, за абсолютною величиною менших одиниці, код суми може за абсолютною величиною перевищити одиницю або стати рівним їй. У такому випадку відбудеться переповнення розрядної сітки, що призведе до неправильного результату. Поясним це на прикладах додавання двійкових чисел у доповняльних кодах (табл. 1). У прикладах 1 і 4 отримані суми не відповідають дійсним, тобто відбулось переповнення розрядної сітки. У таких випадках результату не існує. Переповнення може відбутися у тих випадках, коли доданки мають однакові знаки. Признаком переповнення розрядної сітки може слугувати протилежність знаку суми, що отримана, знакам доданків. Таблиця 1. 1.2. Додавання двійкових чисел у модифікованому доповнювальному коді При додаванні двійкових чисел у доповнювальному коді обов’язковою є умова, щоб кожний з доданків і їх сума за абсолютною величиною були менше одиниці. Доповнювальні коди чисел додаються порозрядно. Причому знакові розряди додаються як звичайні розряди цілих чисел. Одиниця переносу, яка виникає при додаванні знакових розрядів, не враховується, тобто відкидається. Суму отримуємо у доповнювальному коді. Приклад 1. Додати у модифікованому доповнювальному коді двійкові числа А і В при наступних умовах: А > 0; B > 0; A + B > 0. A = + 0,1101; B = + 0,0001 +  EMBED Equation.3   EMBED Equation.3 00,1110;  EMBED Equation.3 00,1110; 2. А > 0; B < 0; A + B > 0. A = + 0,1101; B = - 0,0001 +  EMBED Equation.3   EMBED Equation.3 100,1100;  EMBED Equation.3 00,1100; Одиниця переносу з старшого знакового  розряду не враховується 3. А < 0; B > 0; A + B < 0. A = - 0,1101; B = + 0,0001; +  EMBED Equation.3   EMBED Equation.3 11,0100;  EMBED Equation.3 11,1100; 4. А < 0; B < 0; A + B < 0. A = - 0,1101; B = - 0,0001; +  EMBED Equation.3   EMBED Equation.3  111,0010;  EMBED Equation.3 11,1110; Одиниця переносу з старшого знакового  розряду не враховується При переведенні у прямий код отриманих від’ємних результатів переводиться саме число і не переводиться знак (див. приклади 3 і 4), або число із спотвореним знаком береться за абсолютною величиною. 1.3. Додавання двійкових чисел у модифікованому оберненому коді Реалізується так само, як і в доповняльному коді. Обернені коди чисел додаються порозрядно, знакові розряди додаються як розряди цілих чисел. Суму отримуємо у оберненому коді. Відмінність полягає у тому, що одиницю переносу із старшого знакового розряду, якщо вона з’являється, потрібно додати до молодшого розряду суми, тобто виникає циклічний перенос. Приклад 2. Додати у модифікованому оберненому коді числа А і В при умові: 1. А > 0; B > 0; A + B > 0. A = + 0,1101; B = + 0,0001; +  EMBED Equation.3   EMBED Equation.3 00,1110;  EMBED Equation.3 00,1110; 2. А > 0; B < 0; A + B > 0. A = + 0,1101; B = - 0,0001; +  EMBED Equation.3   EMBED Equation.3 100,1011 Циклічний перенос ↳ ↥+1  EMBED Equation.3 ;  EMBED Equation.3 00,1110; 3. А<0; B>0; A+B<0. A= - 0,1101; B= +0,0001; +  EMBED Equation.3   EMBED Equation.3 11,0011;  EMBED Equation.3 11,1100; 4. А < 0; B < 0; A + B < 0. A = - 0,1101; B = - 0,0001; +  EMBED Equation.3   EMBED Equation.3 111,0000; Циклічний перенос ↳ ↥+1  EMBED Equation.3 ;  EMBED Equation.3 11,1110; 1.4. Переповнення розрядної сітки при додаванні у модифікованих машинних кодах Переповнення розрядної сітки при додавання модифікованих кодів може бути лише у випадках, коли доданки мають однакові знаки. Таке переповнення виявляється способом порівняння знакових розрядів отриманої суми. Признаком переповнення є неспівпадіння цифр, які створюються у двох знакових розрядах суми, тобто результат неможливо віднести до жодного з модифікованих кодів. Пояснимо це на наступних прикладах. Приклад 3: 1. А = + 0,1101; 2. А = - 0,1101; В = + 0,0111; В = - 0,0111; А + В > 0; А + В < 0; + EMBED Equation.3  + EMBED Equation.3   EMBED Equation.3   EMBED Equation.3  Як видно з прикладів, у знакових розрядах отриманої суми додатних доданків маємо комбінацію „01”, від’ємних – „10”, які свідчать про переповнення розрядної сітки. 1.5. Множення двійкових чисел із знаком Операція множення двох чисел зводиться до послідовного виконання сукупності операцій множення множеного на розряди множника і зсуву проміжних добутків та множника. Нагадаємо, що у цьому процесі у дійсності застосовуються тільки два правила множення одного двійкового числа на двійкову цифру: якщо ця цифра множника дорівнює 1, то двійкове число (множник) просто копіюється; якщо цей розряд множника дорівнює 0, то проміжний добуток дорівнює 0. При створенні кожного нового проміжного добутку він зсувається вліво на один розряд по відношенню до попереднього проміжного добутку. Наступний проміжний добуток зсувається вліво на один розряд від попереднього і у тому випадку, коли він дорівнює 0. Цей процесс продовжується до тих пір, поки не будуть використані всі розряди множника. Отримані проміжні добутки додаються і їх сума дає остаточний результат. Додавання можна починати не чекаючи формування всіх проміжних добутків: вони можуть сумуватися поступово. До першого проміжного добутку додається другий, до першої проміжної суми додається третій і так до кінця процесу. Алгоритми виконання операції множення для різних форм подання чисел відрізняються незначно. Головні відмінності полягають у визначенні величини порядку добутку при множенні чисел з рухомою комою і місця коми при множенні чисел з фіксованою комою. Як відомо, при множенні двох чисел, що задані у прямих кодах і з довільною комбінацією знаків, код знаку добутку визначається згідно таблиці 5.5. Таблиця 5.5. Знак добутку визначається як сума за модулем 2 () над знаками множенного і множника. Визначення знаку добутку проводится до операції множення, тобто можна відокремити коди знаків обох чисел, визначити знак добутку і тимчасово зберігати його окремо. Власне множення виконується над модулями чисел найчастіше у прямих кодах. Після визначення добутку його код знаку треба записати на своє місце. При точному множенні n – розрядних двійкових чисел кількість цифр у добутку може досягати 2n. Крім необхідності враховувати знаки співмножників для визначення знаку добутку, потрібно враховувати вплив їх знаків на достовірність результату. Від’ємними можуть бути як множене, так і множник. Якщо від’ємний знак подається одиницею перед старшим розрядом модуля двійкового числа, це сприймається комп’ютером як старший розряд числа. Тоді результат операції множення, коли множене або множник від’ємний, буде хибний і величина похибки залежить від того, яке з двох чисел (або обидва) є від'ємним. Можливі три випадки: 1). (- А) * (+ В) ; 2). (+ А) * (- В) ; 3). (- А) * (- В) . ↱Знак ↱Знак ↱Знак 1101 0101 1101 * 0011 * 111 * 111 1101 0101 1101 + 1101 + 0101 + 1101 0101 1101 У наведених прикладах товстим шрифтом виділені помилкові (зайві) розряди у проміжних добутках і помилкові проміжні добутки, які виникають через наявність коду 1 у від’ємних числах. Множення чисел в оберненому і доповнювальному кодах виконується за правилами множення прямих кодів (при відповідному перетворенні кодів співмножників і результату) або безпосередньо у цих кодах з врахуванням їх спеціфічних властивостей. 1.5.1. Множення чисел у форматі з фіксованою комою Операція множення чисел у форматі з фіксованою комою складає основу усіх методів множення чисел, поданих у інших форматах. Місце коми при множенні чисел з фіксованою комою не грає ролі і у результаті завжди наперед відомо. Будемо вважати, що співмножники представляють правильні дроби. Таким чином, крім операції додавання для отримання добутку необхідна операція зсуву. При цьому з'являється можливість зсувати множене або суму проміжних добутків, що дає підставу для різних методів реалізації операції множення. М е т о д 1. Нехай А – множене (А > 0), В – множник (В > 0), С – добуток. Тоді у випадку подання чисел у формі з фіксованою комою отримаємо: А = 0, а1 а2 а3 . . . аn; В = 0, b1 b2 . . .bn = b12-1 + b22-2 + . . . + bn2-n. Звідси С = А * В = 0, а1 а2 а3 . . . аn(b12-1 + . . . + bn2-n) = = (2-1 * 0, a1 a2 . . . an )b1 + (2-2 * 0, a1 a2 . . .an )bn + . . . + (2-n * 0, a1 a2 . . . an )bn . Множник 2-n означає зсув на n розрядів вправо числа, яке знаходиться у дужках, тобто у даному випадку зсувається вправо множене і множення починається із старших розрядів. М е т о д 2. Нехай А = 0, а1 а2 а3 . . . аn – множене і В = 0, b1 b2 . . .bn – множник. Множник легко перетворити, використовуючи метод Горнера: В = (. . .((bn * 2-1 + bn-1)2-1 + bn-2) * 2-1 + . . . b2) * 2-1 + b1) * 2-1 . Тоді С = А * В = (. . .((b * 0, a1 a2 . . . an) * 2-1 + bn-1 0, a1 a2 . . .an )2-1 + b1 0, a1 a2 . . .an )2-1 . У цьому випадку множення починається з молодшиз розрядів і зсувається вправо сума проміжних добутків. М е т о д 3. Нехай А = 0, а1 а2 а3 . . . аn – множене і В = 0, b1 b2 . . .bn – множник. Множник, використовуючи метод Горнера, можна записати таким чином: В = 2-n (b1 * 2n-1 + b2* 2n-2 + bn-1* 21 + bn * 20) = 2n-1 (. . . ((b1 * 21 * b2) 21 + . . . + b n-1) 21 + bn). У цьому випадку С = А * В = 2-n (bn * 0, a1 a2 . . . an + (21 * 0, a1 a2 . . . an) bn-1 + . . . + (2n-1 * 0, a1 a2 . . . an)b1), що означає: множення починається з молодших розрядів, і множене зсувається вліво на один розряд у кожному такті. М е т о д 4. Нехай А = 0, а1 а2 а3 . . . аn – множене і В = 0, b1 b2 . . .bn – множник. Якщо множник В записати за методом Горнера: С = А * В = 2-n (. . .(21 (b1 * 0, a1 a2 . . . an) + b2* 0, a1 a2 . . . an) 21 + . . . . . . + bn-1* 0, a1 a2 . . . an) 21 + bn* 0, a1 a2 . . . an), то множення починається із старшого розряду і у кожному такті зсувається вліво сума проміжних добутків. Крім згаданих вище існують і інші методи та алгоритми. Взагалі множення двійкових чисел може здійснюватися: - послідовним способом – при цьому одночасно аналізується тільки один розряд множника і формуються часткові добутки множеного на один розряд множника. Ці добутки послідовно сумуються; паралельним способом – при цьому одночасно аналізуються всі розряди множника і одразу формується кінцевий результат – добуток множеного на усі розряди множника; проміжним способом – при цьому одночасно аналізуються декілька розрядів множника і формуються часткові добутки множеного на декілька розрядів множника, ці добутки послідовно сумуються. Хід роботи: Ознайомитися з теоретичними відомостями методичних вказівок. Розробити алгоритм і написати програму додавання (віднімання) довільних 16-розрядних (із знаковими розрядами) двійкових чисел, поданих у форматі з фіксованою комою у оберненому модифікованому коді у інструкціях навчального комп’ютера DeComp Виконати дослідження програми, розробленої у пункті 1, у покроковому режимі. Розробити алгоритм і написати програму множення довільних двійкових чисел. Варіант виконання вибрати з таблиці: Виконати дослідження програми, розробленої у пункті 4, у покроковому режимі. Оформити і захистити звіт. 3. Вимоги до звіту Вимоги до звіту аналогічні вимогам до лабораторної роботи № 3. Література. Нешумова К. А. Электронные вычислительные машины и системы. Учеб. для техникумов спец. ЭВТ. – 2-е изд., доп. и перераб. М.: Высш. шк., 1989. Рабинович З. Л., Раманаускас В. А. Типовые операции в вычислительных машинах. К.: Техніка, 1980. Савельев А. Я. Арифметические и логические основы цифрових автоматов: Учебник. – М.: Высш. школа, 1980. Цилькер Б. Я., Орлов С. А. Организация ЭВМ и систем. Учебник для вузов. – СПб.: Питер. 2006.
Антиботан аватар за замовчуванням

01.01.1970 03:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!