1.3. Переведення чисел з однієї позиційної системи числення до іншої
Переведення чисел з однієї системи числення до іншої може бути виконано двома шляхами. Перший шлях - табличний, який базується на співставленні коду одної системи числення коду іншої системи числення, що мають однакові числові еквіваленти. Спосіб громіздкий, потребує великого об'єму пам'яті для зберігання таблиці, однак, може бути застосований для любих систем числення, включаючи також непозиційні системи числення. Другий шлях - розрахунковий, але він може бути застосований тільки для однорідних позиційних систем числення.
1.3.1. Переведення цілих чисел
Правило переведення цілого числа з однієї системи числення до іншої. Число послідовно ділять на основу нової системи числення, записаної у початковій системі числення, до отримання частки, що дорівнює нулю. Число у новій системі числення записується як послідовність залишків від ділення, починаючи з останнього залишку.
Операцію ділення виконують у початковій системі числення, тому її зручно використовувати при переведенні десяткових чисел до інших систем числення.
Приклад 1. Перевести число 2510 у двійкову, вісімкову і шістнадцяткову системи числення.
а). 25 : 2 = 12 (залишок = 1) б). 25 : 8 = 3 (залишок 1) в). 25 : 16 = 1 (залишок 9)
12
: 2 = 6 (залишок = 0)
6 : 2 = 3 (залишок = 0) Напрямок запису Напрямок запису
3 : 2 = 1 (залишок = 1)
1 : 2 = 0 (залишок = 1)
↓ Напрямок
Остання запису
частка
Результат переведення буде: 2510 = 110012 = 318 = 1916.
1.3.2 Переведення правильного дробу
Правило переведення правильного дробу з однієї системи числення до іншої. Правильний дріб послідовно множать на основу нової системи числення, записаної в початковій системі числення. У процесі множення приймають участь тільки дробові частини проміжних добутків, тобто їх ціла частина ігнорується, але не відкидається. Операцію множення виконують в початковій системі числення, тому це правило переважно використовують при переведенні десяткових дробів до інших систем числення. Правильний дріб у новій системі числення записується як послідовність цілих частин добутків, отриманих від множення, починаючи з першого.
Процес переведення закінчується, коли проміжний добуток дорівнює 0 у всіх розрядах або досягнута необхідна точність, тобто отримана необхідна кількість розрядів результату після коми.
Приклад 2.3. Десятковий дріб 0,312610 перевести у двійкову і вісімкову системи числення з точністю до 2-4.
0,3126 0,6252 0,2504 0,5008 0,3126 0,5008 0,2504 0,5008
* 2 * 2 * 2 * 2 * 8 * 8 * 8 * 8
0,6252 1,2504 0,5008 1,1,0016 2,5008 4,0064 0,0512 0,4096
Відповідно, результат буде записаний як: 0,312610 = 0,01012 = 0,24008 .
1.3.4 Переведення чисел з любої позиційної системи числення до десяткової системи
При необхідності переведення чисел до десяткової системи з інших систем числення, у загальному випадку використовується формула повного запису числа (1). При використанні цього способу всі арифметичні дії виконуються у тій системі числення, до якої дане число переводиться. Число записується у розгорнутій (повній) формі у своїй системі числення, але значення розрядів записуються у десятковій формі. Виконавши всі операції за правилами десяткової арифметики ми отримаємо результат у десятковій формі.
Приклад 2.2. Перевести дані числа до десяткової системи числення.
1100101,12 = 1 * 26 + 1* 25 + 1* 22 + 1* 20 + 1* 2 -1 = 101,510 ;
3138 = 3 * 82 + 1* 81 + 3 * 80 = 20310 ;
1BF,516 = 1 * 162 + 11 * 161 + 15 * 160 + 5 * 16-1 = 447 + 5/16
Завдання, 2. . Порядок виконання лабораторної роботи № 1.
1. Вивчити теоретичні відомості до лабораторної роботи № 1.
2. Дайте відповіді на такі контрольні питання:
15) Поясніть табличний метод переведення чисел з шістнадцяткової до двійкової системи;
Табличний метод базується на співставленні коду одної системи числення коду іншої системи числення, що мають однакові числові еквіваленти. Спосіб громіздкий, потребує великого об'єму пам'яті для зберігання таблиці, однак, може бути застосований для любих систем числення, включаючи також непозиційні системи числення.
3. Запускаємо програму “Симулятор навчальної ЕОМ DeComp” (файл DeComp.exe) і вклчаєм живлення на панелі навчального комп’ютера
За допомогою набірного поля і кнопок “Занесення з набірного поля”, записати до регістрів процесора такі значення двійкових кодів: до РА – 0101 0101 0101,
до РД – 0011 0011 0011 0011,
до А – 0000 1111 0000 1111,
до РІ – 0000 0000 1111 1111,
до ЛАІ – 1010 1010 1010.
У набірне поле заносимо 0101 0101 0101 і натискаєм кнопку РА у полі “Занесення з набірного поля”
У набірне поле заносимо 0011 0011 0011 0011 і натискаєм кнопку РД у полі “Занесення з набірного поля”
У набірне поле заносимо 0000 1111 0000 1111і натискаєм кнопку А у полі “Занесення з набірного поля”
У набірне поле заносимо 0000 0000 1111 1111 і натискаєм кнопку РІ у полі “Занесення з набірного поля”
У набірне поле заносимо 1010 1010 1010 і натискаєм кнопку ЛАІ у полі “Занесення з набірного поля”
4. За допомогою набірного поля і кнопок “Операція з пам’яттю” записати до 5-ти сусідніх комірок пам’яті з адресами 20, 21, 22, 23 та 24 числа 16, 17, 18, 19 та 20. Попередньо всі десяткові числа перевести до двійкової системи числення і результати записати у робочий зошит для подання у звіті. Вміння виконувати вказані дії продемонструвати викладачу.
Переводимо числа в двійкову систему
1610 = 100002
1710 = 100012
1810 = 100102
1910 = 100112
2010 = 101002
2110 = 101012
2210 = 101102
2310 = 101112
2410 = 110002
Вводимо адресу першої комірки (10100) і нажимаємо РА в полі “Занесення з набірного поля”.
Вводимо перше число (10000) і нажимаємо РД в полі “Занесення з набірного поля”.
Натискаємо кнопку “Запис” в полі “Операції з пам’яттю”.
Натискаємо +1 в тому ж полі, і вводимо наступне число.
Після введення всіх чисел вводимо адресу першої комірки і нажимаємо РА в полі “Занесення з набірного поля”, а потім “Читання” в полі “Операції з пам’яттю” і перевіряємо чи правильно введене число.
5. Записати у пам’ять описану нижче програму, яка додаватиме числа, що знаходяться у 10-й та 11-й комірках пам’яті, а результат запише до 12-ї комірки. Програму розмістити у оперативній пам’яті, починаючи з комірки за адресою 0 (нуль). Попередньо у 10-ту та 11-ту комірки занести числа відповідно до свого варіанту:
Таблиця варіантів до завдання
№ за списком |
Число 1 |
Число 2 |
№ за списком |
Число 1 |
Число 2 |
№ за списком |
Число 1 |
Число 2 |
1 |
22 |
33 |
11 |
18 |
28 |
21 |
47 |
5 |
2 |
25 |
34 |
12 |
19 |
32 |
22 |
13 |
33 |
3 |
31 |
16 |
13 |
14 |
42 |
23 |
29 |
22 |
4 |
21 |
24 |
14 |
44 |
10 |
24 |
34 |
20 |
5 |
31 |
18 |
15 |
37 |
21 |
25 |
44 |
21 |
6 |
41 |
9 |
16 |
41 |
12 |
26 |
35 |
26 |
7 |
35 |
17 |
17 |
35 |
28 |
27 |
19 |
33 |
8 |
27 |
15 |
18 |
16 |
37 |
28 |
40 |
11 |
9 |
38 |
7 |
19 |
25 |
30 |
29 |
12 |
37 |
10 |
36 |
21 |
20 |
20 |
30 |
30 |
23 |
32 |
Відповідна програма у мнемонічних кодах буде мати такий вигляд:
Мнемонічний код інструкції |
Дія, яку виконує інструкція |
LOAD 10 |
завантажити (прочитати) значення числа з 10-ї комірки пам’яті до акумулятора; |
ADD 11 |
додати до числа в акумуляторі значення числа з 11-ї комірки пам’яті і результат зберегти в акумуляторі; |
STORE 12 |
зберегти (записати) значення числа з акумулятора до 12-ї комірки пам’яті; |
HALT |
зупинити роботу процесора. |
У двійковому поданні дана програма матиме наступний вигляд:
0000 0000 0000 1010 – двійковий код 1-ої інструкції
0010 0000 0000 1011 - - “ - 2-ої інструкції
0001 0000 0000 1100 - - “ - 3-ої інструкції
0111 1100 0000 0000 - - “ - 4-ої інструкції
Відповідно, двійковий код першої інструкції необхідно занести до комірки з адресою 0 (0000 0000 0000), другу – у комірку з адресою 1 (0000 0000 0001), третю – у комірку з адресою 2 (0000 0000 0010), а четверту – у комірку з адресою 3 (0000 0000 0011).
Після того, як програма розміщена у пам’яті навчального комп’ютера і у 10-ту (код адреси у двійковій формі - 0000 0000 1010) та у 11-ту (код адреси - 0000 0000 1011) комірки будуть занесені задані числа, необхідно у Лічильнику Адреси Інструкції за допомогою набірного поля встановити адресу першої інструкції, тобто код адреси - 0000 0000 0000, тобто показати процесору звідки починати виконання програми.
Переводимо числа в двійкову систему:
1310=11012
3310=1000012
Вводимо в набірне поле 0000 0000 0000 натискаємо РА
Вводимо 0000 0000 0000 1010 натискаємо РД і “запис”.
Нажимаємо +1 вводимо 0010 0000 0000 1011 натискаємо РД і запис.
Нажимаємо +1 вводимо 0001 0000 0000 1100 натискаємо РД і запис.
Нажимаємо +1 вводимо 0111 1100 0000 0000 натискаємо РД і запис.
Вводимо 0000 0000 1010 натискаємо РА вводимо 0000 0000 0000 1101 натискаємо РД і запис.
Нажимаємо +1 вводимо 0000 0000 0010 0001 натискаємо РД і запис.
Вводимо 0000 0000 0000 і нажимаємо ЛАІ.
6. Виконати програму у автоматичному режимі і перевірити результат у 12-й комірці, прочитавши значення 12-ї комірки пам’яті.
Нажимаємо “пуск” получаємо на акумуляторі 0000 0000 0010 1110
Перевіряємо значення в 12 комірці вводимо 0000 0000 1100 нажимаємо РА і “читання” получаємо 0000 0000 0010 1110 переведемо в десяткову: 0000 0000 0010 11102=4610
33+13=46 отже програма виконана правильно.
7. Онулити 12-ту комірку, знову встановити у ЛАІ адресу першої інструкції – адресу 0 і дослідити цю програму, виконавши її у покроковому режимі. Після виконання кожної інструкції записати у подану нижче таблицю вміст усіх регістрів процесора.
|
РА |
РД |
А |
РІ |
ЛАІ |
РО |
1-й крок |
0000 0000 0000 1010 |
0000 0000 0000 1101 |
0000 0000 0000 1101 |
0000 0000 0000 1010 |
0000 0000 0000 0001 |
0000 0000 0000 0000 |
2-й крок |
0000 0000 0000 1011 |
0000 0000 0010 0001 |
0000 0000 0010 1110 |
0010 0000 0000 1011 |
0000 0000 0000 0010 |
0000 0000 0000 0000 |
3–й крок |
0000 0000 0000 1100 |
0000 0000 0010 1110 |
0000 0000 0010 1110 |
0001 0000 0000 1100 |
0000 0000 0000 0011 |
0000 0000 0000 0000 |
4–й крок |
0000 0000 0000 0011 |
0111 1100 0000 0000 |
0000 0000 0010 1110 |
0111 1100 0000 0000 |
0000 0000 0000 0011 |
0000 0000 0000 0000 |
Проаналізувати процес змін у регістрах процесора на кожному кроці виконання програми.
В першому кроці число 0000 0000 0000 1101 записується в комірку 0000 0000 0000 1010 (10-ту) і заноситься в акумулятор. В ЛАІ номер кроку 0000 0000 0000 0001(1-й)
В РІ команда 0000 0000 0000 1010 команда що завантажить значення числа з 10-ї комірки до акумулятора.
В другому кроці число 0000 0000 0010 0001 записується в комірку 0000 0000 0000 1011 (11-ту) в акумуляторі записується сума першого і другого чисел. В ЛАЙ 0000 0000 0000 0010 (2-й).
В РІ команда 0010 0000 0000 1011 команда що додасть значення з 10-ї та значення з 11-ї комірок і результат занесе в акумулятор.
В третьому кроці в регістрі даних інформація з акумулятора записується в 0000 0000 0000 1100 (12-ту) комірку. В ЛАЙ 0000 0000 0000 0011 (3-й).
В РІ команда 0001 0000 0000 1100 команда що збереже інформацію з акумулятора в 12-ту комірку
В четвертому ЛАІ 0000 0000 0000 0011 (4-й)
В РІ команда 0111 1100 0000 0000 команда що зупинить роботу процесора.
.
Висновок: виконавши дану роботу я ознайомився з організацією навчального комп’ютера - симулятора DeComp. Під час виконання роботи я навчився переводити цілі та дробові числа у різні системи числення, вводити їх в регістр даних симулятора DeComp та виконувати на ними дії за допомогою готових команд, а також складати найпростіші програми. Також я вивчив особливості різних систем числення їх переваги і недоліки наприклад двійкова система має перевагу оскільки використовує тільки два знака 1 і 0
але її недоліком є значно більша, порівняно з іншими системами числення, кількість розрядів, які необхідні для подання однакових за абсолютною величиною чисел.
