У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент


ЧПК з меншим порядком (денормалізація).

Вирівнювання порядків шляхом зменшення більшого порядку призводить до виходу за межі розрядної сітки обчислювальної машини і тому не використовується.

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

Після вирівнювання порядків денормалізована мантиса додається або віднімається від мантиси числа із більшим порядком. В обчислювальних машинах мантиси ЧПК зберігаються виключно в прямих кодах, тому віднімання денормалізованої мантиси доцільно здійснювати шляхом її представлення у додатковому коді із подальшим додаванням. Результат додавання нормалізується, після чого визначається знак результату.

Для обчислення суми і різниці цих чисел з плаваючою комою вирівнюються порядки, оскільки додавати або віднімати мантиси чисел можна в тому випадку, коли порядки чисел рівні.

Для визначення місця коми необхідно додати кількість знаків після коми в вхідних числах і пересунути кому на цю кількість знаків.

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

4 РОЗРАХУНКОВА ЧАСТИНА

4.1 Представлення чисел в пам’яті комп’ютера

Запишемо своє прізвище, ім’я, по-батькові без пробілів.

Lutsyuk Taras Ihorovich

Візьмемо перші 16 символів із цієї послідовності і отримаємо послідовність символів Lutsyuk Taras. Замість кожного символу запишемо його молодшу цифру ASCII-коду.

L u t s y u k T a r a s

C 5 4 3 9 5 B 4 1 2 1 3

Розіб’ємо отриману послідовність на дві частини по 8 цифр в кожній:

9 5

4 3

C 5

1 3

1 2

B 4

Перше число – C 5 4 3 9 5

Друге число – B 4 1 2 1 3

Покажемо розміщення чисел в пам’яті комп’ютера. Берем по два символи кожного числа.

Запишемо адрес першого як <seg>:<offset> у вигляді другого числа.

B 4 1 2 : 1 3 C 5

Адрес другого числа отримаємо шляхом збільшення на 4 адреса першого числа.

B 4 1 2 : 1 3 C 9

Обчислимо фізичний адрес пам’яті розміщення першого і другого чисел за формулою <фіз.адреса>=<seg>*p + <offset> , де р=16.

(B 4 1 2)*1 6 + 1 3 C 5=F 8 D 5 1

(B 4 1 2)*1 6 + 1 3 C 9 = F 8 D 5 5

Переведемо дані числа в десяткову систему числення за формулою (1.3.4).

Переведемо перше число:

C 5 4 3 9 5 16 = 5*160+9*161+3*162+4*163+5*164+C*165 =

=5+144+768+16384+327680+12582912=12927893

Переведемо друге число:

B 4 1 2 1 316 = B*160+4*161+1*162+2*163+1*164+3*165=

=11+64+256+8192+65536+3145728=3219787

Переведемо дані шістнадцяткові числа в двійкову систему числення, замінивши кожен символ H-коду на 4 цифри двійкового коду.

Переведемо перше число:

C16 = 1100 516 = 0101 416 = 0100

316 = 0011 916 = 1001 516 = 0101

Отримаємо перше число: C 5 4 3 9 5 = 110001010100001110010101

Переведемо друге число:

B16 =1011 416 =0100 116 =0001

216 =0010 116 =0001 316 =0011

Отримаємо друге число: B 4 1 2 1 3= 101101000001001000010011

4.2 Арифметичні операції з двійковими числами

Для наступних операцій утворимо з вихідних чисел двійкові числа з нульовим старшим бітом. У першому числі старший біт дорівнює 0 тому нічого не змінюємо. У другому числі старший біт дорівнює 1 тому замінимо його на 0. Отримаємо:

а1 = 1100010101000011100101012

а2 = 1011010000010010000100112

Виконаємо додавання (віднімання) двійкових чисел в додатковому коді при всіх можливих сполученнях знаків. Представимо числа в додатковому коді за формулою:

А, якщо число додатне

Адодаткове = (4.2.1)

Аобернене+1, якщо число від’ємне

Після переведення чисел отримаємо:

+а1 = 1100010101000011100101012

+а2 = 1011010000010010000100112

-а1= 0011101010111100011010112

-а2= 0100101111101101111011012

Виконаємо додавання а1+а2

110001010100001110010101

+

101101000001001000010011

1011110010101010110101000

 

Виконаємо дію а1-а2=а1+(-а2)

110001010100001110010101

+

010010111110110111101101

1000100010011000110000010

 

Виконаємо дію а2-а1=а2+(-а1)

101101000001001000010011

+

001110101011110001101011

111011101100111001111110

 

Виконаємо дію -а1-а2=-а1+(-а2)

001110101011110001101011

+

010010111110110111101101

100001101010101001011000

Виконаємо перевірку отриманих результатів. Додамо і віднімемо числа а1 і а2 при всіх можливих сполученнях знаків в десятковій системі числення.

а1 = 1292789310

а2 = 1180110710

Виконаємо дію а1+а2 = 12927893+11801107=24729000.

Результат переведемо в двійкову систему числення і запишемо його у

додатковому коді:

2472900010 = 10111100101010101101010002

Даний результат суми чисел +а1 і +а2 в додатковому коді співпав з результатом отриманим додаванням цих чисел в десятковій системі числення

Виконаємо дію а1- а2= 12927893 –11801107= 1126786

Результат переведемо в двійкову систему числення і запишемо його у додатковому коді:

112678610 = 1000100110001100000102

Виконаємо дію а2 – а1 = 11801107 – 12927893= -1126786

Результат переведемо в двійкову систему числення і запишемо його в додатковому коді:

-112678610 = 1110111011001110011111102

Даний результат співпав з додатковим кодом різниці чисел +а1 – а2, отриманий швидше.

Виконаємо дію –а2 – а1 = –11801107 –12927893 =-24729000.

Результат переведемо в двійкову систему числення і запишемо його в додатковому коді :

-2472900010 = 1000011010101010010110002

4.3 Десяткові числа в упакованому і неупакованому форматах

Переведемо числа а1 і а2 в десяткову систему числення.

а1 = 1292789310

а2 = 1180110710

Запишемо числа в запакованому форматі.

Число +а1 в запакованому форматі має вигляд:

0 0000 | 1100 | 1100 | 0101 | 0100 | 0011 | 1001 | 0101

, де молодша тетрада 11002 = С16 старшого байта – знак плюс. Тетради решта байтів– цифри числа.

Число +а2 в запакованому форматі має вигляд:

0000 | 1100 | 1011 | 0100 | 0001 | 0010 | 0001 | 0011

, де молодша тетрада 11002 = С16 старшого байта – знак плюс. Тетради решта байтів– цифри числа.

Число –а1 в запакованому форматі має вигляд:

0 0000 | 1100 |


Сторінки: 1 2 3 4 5 6 7