Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Програмне моделювання машинних алгоритмів множення чисел з фіксованою крапкою






Лабораторна робота № 3

 

Мета роботи: Розглянути машинні алгоритми виконання операції множення над числами у форматі з фіксованою крапкою.

 

Теоретичні відомості: Розглянемо приклад множення двох чисел в двійковій системі:

 

101001110

10100111

 

З цього прикладу видно, що для реалізації операції множення можуть застосовуватися схеми множення із молодших розрядів або із старших розрядів, а також із зсувом часткових сум або множника. Комбінація цих параметрів множення дають 4 алгоритми множення.

Нижче наведені приклади для різних схем множення. Для спрощення наведені восьми-розрядні операнди.

 

1. Множення з молодших розрядів другого множника та зсувом ліворуч першого множника. Перший множник подано у другому рядку. Починаючи з другого кроку цей множник зсувається ліворуч на один двійковий розряд та додається до загальної суми, якщо чергова цифра другого множника, що висувається 1, інакше нічого не додається. Результат у вигляді часткової суми подається третім рядком на кожному кроці.

 

 

   
   
   

Початковий стан

 

     
     
     

Перший крок

 

     
     
     

Другий крок

 

     
     
     

Третій крок

 

     
     
     

00 00 0
Четвертий крок

 

     
     
     

П’ятий крок

 

     
     
     

Шостий крок

 

     
     
     

Сьомий крок

 

     
     
     

Восьмий крок

 

Рис. 3.1 Приклад застосування схеми множення з молодших розрядів другого множника та зсувом ліворуч першого множника

 

На цій схемі перший рядок відповідає другому множнику, який зсувається праворуч на один розряд. Другий рядок відповідає першому множнику, який зсувається ліворуч. В третьому рядку дається часткова сума. Якщо черговий висунутий розряд другого множника – 0, то часткова сума не змінюється, якщо 1, то до часткової суми додається зсунутий другий множник.

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

 

   
   
   

Початковий стан

 

     
   
   
     

Перший крок

 

  1  
   
   
     

Другий крок

 

     
   
   
     

Третій крок

 

     
   
   
     

Четвертий крок

 

     
   
   
     

П’ятий крок

 

     
   
   
     

Шостий крок

     
   
   
     

Сьомий крок

 

     
   
   
     

Восьмий крок

 

Рис. 3.2 Приклад застосування схеми множення із старших розрядів другого множника та зсувом першого множника праворуч при кожному кроці на один розряд

 

За цією схемою множення множник, що подається на схемі першим рядком, зсувається ліворуч на один двійковий розряд на кожному кроці. Другий множник при цьому зсувається праворуч на один двійковий розряд та додається до загальної суми, де накопичується результат, якщо чергова цифра першого множника, що аналізується при зсуві 1, інакше результат не змінюється.

 

3. Множення з молодших розрядів другого множника із зсувом часткових сум праворуч. Перший множник подається в кожному кроці другим рядком у положенні, як при множенні на старшу цифру другого множника. Другий множник подано в першому рядку. На кожному кроці при його зсуві праворуч показується чергова двійкова цифра. Часткова сума у третьому рядку перед виконанням попередньо зсувається праворуч на один розряд. На першому кроці праворуч зсувається початкове нульове значення цієї суми.

 

 

   
   
   

Початковий стан

 

     
     
     

Перший крок

 

     
     
     

Другий крок

 

     
     
     

Третій крок

 

     
     
     

Четвертий крок

 

     
     
     

П’ятий крок

 

     
     
     

Шостий крок

 

     
     
     

Сьомий крок

 

     
     
     

Восьмий крок

 

Рис. 3.3 Приклад застосування схеми множення з молодших розрядів другого множника із зсувом часткових сум праворуч

 

4. Множення із старших розрядів другого множника із зсувом часткової суми ліворуч. За цим алгоритмом на кожному кроці здійснюється зсув множника на один розряд ліворуч та додавання до загальної суми, якщо чергова висунута двійкова цифра – 1, інакше нічого не додається. Часткова сума, що подана третім рядком зсувається на кожному кроці на один розряд ліворуч. Перший раз зсувається нульове значення.

 

   
   
   

Початковий стан

     
   
   
     

Перший крок

 

     
   
   
     

Другий крок

 

     
   
   
     

Третій крок

 

     
   
   
     

Четвертий крок

 

     
   
   
     

П’ятий крок

 

     
   
   
     

Шостий крок

 

     
   
   
     

Сьомий крок

 

     
   
   
     

Восьмий крок

 

Рис. 3.4 Приклад застосування схеми множення з молодших розрядів другого множника із зсувом часткових сум ліворуч

 

Як бачимо з наведених на рисунках прикладів, всі перелічені алгоритми дають однаковий результат.

Окремим зауваженням можна вказати те, що при розрядності операндів n, розрядність результату є 2n.

Множення чисел з фіксованою крапкою у прямому коді відбувається шляхом окремого виконання операцій для числових розрядів та для знакових. Множення числових розрядів відбувається за однією з вищеописаних схем, а для визначення знаку добутку відбувається додавання по модулю 2 знакових розрядів операндів множення.

Множення чисел з фіксованою крапкою у додатковому коді має свої особливості оскільки в даному випадку знакові розряди обробляються разом з числовими. Результат множення за будь-якою з вищеописаних схем буде не відповідати додатковому коду добутку, тому його будемо вважати псевдодобутком. Для отримання справжнього добутку потрібно виконати корекцію псевдодобутку. Маємо чотири варіанти множення чисел в додатковому коді:

1. Перший операнд (X) і другий операнд (Y) більші від нуля. В такому випадку множення відбувається звичайним чином за однією з схем.

2. X > 0, Y < 0, в такому випадку до псевдодобутку потрібно додати додатковий код числа -2X.

3. X < 0, Y > 0, в такому випадку до псевдодобутку потрібно додати додатковий код числа -2Y.

4. X < 0, Y < 0, в такому випадку до псевдодобутку потрібно додати додатковий код числа 2(|X| + |Y|).

 

Завдання на виконання лабораторної роботи.

1) Обрати свій номер варіанта згідно з останньою цифрою у номері залікової книжки (цифра „0” відповідає десятому варіантові).

2) Створити блок-схему алгоритму машинного множення чисел з фіксованою крапкою згідно варіанту.

3) Проаналізувати текст паскаль-програми у файлі lab3_var_”N”.pas (де „N” – номер варіанту) і визначити її призначення.

4) Скомпілювати програму та запустити на виконання.

5) Підставити власні вхідні значення та проаналізувати результати роботи програми.

6) Оформити звіт та подати його викладачу разом з результатами виконання роботи.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.015 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал