Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

варіанту дійсні числа; перевести їх з десяткової в двійкову і шістнадцяткову систему числення; отри

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 30.5.2024

SM: Практична робота №4 до лекції 4 

Практична робота № 4

Внутрішнє представлення дійсних чисел в IBM PC

Мета роботи:

Отримати|здобуття| практичні навики|навиків| переведення дійсних чисел з десяткової системи числення в двійкову.  Оволодіти навиками|навичками| представлення дійсних чисел  засобами мови Асемблер.

Порядок виконання роботи:

  1.  визначити для свого варіанту дійсні числа;
  2.  перевести їх з десяткової  в двійкову  і шістнадцяткову систему числення;
  3.  отримати їх внутрішнє представлення;
  4.  написати програму опису цих даних  на мові Асемблера і отримати лістинг;
  5.  перевірити правильність своїх викладень.

Цілочисельні дані мають бути представлені в усіх можливих для платформи Win32 форматах з урахуванням їх діапазону представлення.

У звіті по лабораторній роботі має бути представлений детальний протокол переведення усіх заданих чисел з 10-ої в 2-ву і 16-ву системи числення.

Варіанти

До заданих двох базових чисел X= ± 60 (ціла частина)  і Y=4567 (дробова частина) , потрібно додати і відняти  № свого варіанту (для цілої і дробової частини окремо).  

Наприклад, № = 45.

№ п\п

Базове число

Ціла частина

Дробова частина

Числа варіанту

1

60.4567

60+45 =105

4567+45=4612

105.4612

2

60.4567

60-45 =15

4567-45=4522

15.4522

3

-60.4567

-60+45 =-15

-4567+45=-4522

-15.4522

4

-60.4567

-60-45 =-105

-4567-45=-4612

-105.4612

Теоретична частина.

Переведення правильних десяткових дробів в двійкову систему числення

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

Приклад 1.         0.5d    =   0.1b 

0.5

х   2

1 . 0

Приклад 2.       0.703125d    =   0.101101b

х

0.703125

Після того, як  отримали нульову мантису, послідовно зверху вниз збираємо усі цілі частини дробу

  

2

1

. 406250

X

2

0

. 812500

X

2

1

. 625000

X

2

1

. 250000

X

2

0

. 500000

X

2

1

  . 000000 000000

Приклад 3.       0.05d  - 0.000011(0011)b

х

0.05

Тут виходить двійковий періодичний дріб.

 

2

0

.10

X

2

0

.20

X

2

0

.40

X

2

0

.80

X

2

1

.60

X

2

1

. 20

4

Таким чином,  дійсні числа в загальному випадку неможливо точно представити в пам’яті ЕОМ.

Переведення змішаних десяткових чисел в двійкову систему числення

Окремо переводяттся  ціла і дробова частин.

Приклад        117.25d   =  1110101.01b

Переведення десяткових чисел в шістнадцяткову систему числення

Приклад 1.         137d =  89h

137d        =        1000 1001b

     8    9  h

Приклад 2.         0.5d  = 0.8 h

0.5d = 0.1b =     0.1000b

0.  8 h

Приклад 3.        0.703125d - 0.B4h

0.703125d  = 0.101101b   =     0.1011 0100b

0.  B    4 h

В наступних прикладах треба зробити розширення до двійкової тетради:

Приклад4.         0.05d = 0.0C(C) h

0.05d  =0.000011(001l) b = 0.0000 1100 1100(1100) b

0.  0   С     С   (C)   h

Приклад 5.        117.25d - 75.4h

117.25d  = 111 0l0l.0lb = 0lll 0l0l.0100 b

   7 5.    4 h

Переведення двійкових чисел в десяткову систему числення

Приклад.        1110101.01b   = 117.25d

позиція

6

5

4

3

2

1

0

-1

-2

число

1

1

1

0

1

0

1

.

0

1

1*26 + 1*25 +  1*24 +  0*23 +  1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 =

64+32+16+4+1+0,25=117.25

Внутрішнє представлення дійсних чисел.

Дійсні базові величини можуть бути типу float, double або long double  Від платформи вони не залежать оскільки їх обробляє співпроцесор.

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

Для того, щоб з|із| максимальною точністю зберегти в пам'яті двійкове число з|із|   плаваючою комою, його мантиса має бути нормалізована.

Процес нормалізації   двійкового числа нічим не відрізняється від нормалізації десяткового дійсного числа.  Наприклад, десяткове число 1234,567 в нормалізованому внде виглядає так:

l, 234567 x 103

Число має  від’ємний знак, його мантиса дорівнює 1,1234567, а показник ступені дорівнює 3.

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

Нормалізація двійкового числа виконується по аналогії з десятковим.

Двійкове число повинне завжди починатися з одиниці і мати наступний вигляд:

± 1.m*2р

де  m – нормалізована  мантиса числа,  р - порядок двійкового числа.

  Прилади.  Представити числа в нормалізованому виді.

± 1d       ± 1b    ± 1*20     

± 0.5d       ± 0.1b      ± 1.0*2-1 

± 0.703125d   ± 0.101101b       ± 1.01101b*2-1

± 0.05d       ± 0.000011(0011) b  ± 1.1(0011)b *2-5

± 117.25d     ± 1110101.01b   ± 1.11010101b*26

Щоб забезпечити нормалізацію, десяткова точка "плаває". То йде вліво і порядок отримує знак плюс, то - вправо, тоді у порядку знак мінус. Звідси і термін - плаваюча точка (floating point).

Внутрішнє (машинне) представлення дійсних  чисел :

Знак числа

Характеристика

Нормалізована мантиса

Наприклад, для 32-розрядного числа

 Знак числа

Характеристика

Нормалізована мантиса

1 біт

8 біт

23 біта

Знак числа: 0 - плюс,  1- мінус.

Характеристика.

Характеристика = Зміщення ± Показник ступені (Порядок)

При представленні числа в  комп'ютері до реального показника ступені додається|добавляє| число 127, тобто число, що дорівнює половині максимально можливого, яке може поміститися в полі  характеристика.

Приклади:

Десяткове значення (Е)

Скоректоване значення (Е+127)

+5

132

0

127

-10

117

+128

255

-127

0

-1

126

Характеристика

0

123

124

125

126

127

128

129

130

255

Показник ступені

-127

...

-4

-3

-2

-1

0

1

2

3

...

128

Таким чином економляться місце і час, оскільки не треба виділяти розряд для знаку порядку і робити додатковий код для від’ємних порядків.

Машинні формати дійсних чисел

  1.  Формат float – 32 біта.

 

S

Характеристика

Нормалізована мантиса

31

30

23

22

1

0

1 біт

8 біт

23 біта

Оскільки двійкове число у нас завжди нормалізоване (1 цифра завжди одиниця), то її зберігати необов'язково. Комп'ютер сам її відновлює. Таке представлення дозволяє вірно відображувати 7-8 десяткових цифр, а його діапазон представлення складає десь 1.5 * 10- 45 . 3.4 * 1038 . Точно вичислити допустимий діапазон для дійсних чисел дуже непросте завдання (особливо для дуже малих чисел).

Приклад 1. ± l.0d = ± 1.0*20

Характеристика = 7F + 0 = 7F = 0111 11112

Число 1.0 – додатнє, тому 31 біт дорівнює 0.

0

0

1

1

1

1

1

1

1

0

0

0

0

0

3

F

8

0

- l.0d    =    ± 1.0*20

1

0

1

1

1

1

1

1

1

0

0

0

0

0

B

F

8

0

Приклад  2.  0.5d  =  ±1.0* 2-1

Характеристика = 7F - 1 = 7Е.

0

0

1

1

1

1

1

1

0

0

0

0

0

0

3

F

0

0

Приклад 3.  0.703125d = 0,101101b =  1,01101b* 2-1

Характеристика = 7F - 1 = 7Е.

0

0

1

1

1

1

1

1

0

0

1

1

0

1

0

0

0

0

0

3

F

3

4

0

0

Приклад 4. -0.05d  = - 1.1(0011)* 2-5

Характеристика = 7F - 5 = 7А.

1

0

1

1

1

1

0

1

0

1

0

0

1

1

0

0

1

B

D

4

C

C

С

Приклад 5  117.25d  =  1110101.01b =  1.11010101b* 26

Характеристика =  7F + 6   =  85.

0

1

0

0

0

0

1

0

1

1

1

0

1

0

1

0

1

4

2

E

A

8

0

  1.  Формат double (64-бітове дійсне  число)

S

Характеристика

Нормалізована мантиса

63

62

52

51

50

1

0

1 біт

11 біт

52 біта

На характеристику витрачається 11 бітів (розряди 52-62). Максимально можливе число, яке можна розмістити в 11-ти бітах це  111 1111 111 lb. Звідси витікає, що

Зміщення = 011 1111 1111b  =   3FFh.

Мантиса теж має прихований розряд. Допустимий діапазон для даних типу double :

1.7 х 10-308 . 1.7 х 10308

Приклад.   -0.05d =  -1.1(0011)* 2-5 b

Характеристика = 3FF - 5 = 3FA = 11 1111 1010 b.

S

Характеристика

Нормалізована мантиса

63

62

61

60

59

58

57

56

55

54

53

52

51

50

49

47

46

45

44

43

42

41

1

0

1

0

1

1

1

1

1

1

1

0

1

0

1

0

0

1

1

0

0

1

1

0

B

F

A

9

9

  1.  Формат long double (80біт)

S

Характеристика

Нормалізована мантиса

79

78

64

63

62

1

0

1 біт

15 біт

64 біта

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

Зміщення = 011 1111 1111 1111b = 3FFFh.

Приклад  ± 117.25d   =    ± 1.11010101 * 26 b

Характеристика = 3FFF + 6 = 4005 = 100 0000 0000 0101 b.  (при складанні повна аналогія з десятковою системою числення).

0

100 0000 0000 0101

1

110 1010 1000 0000 ... .0000

1.11010101

117.25 =  40 05 ЕА 80 00 00 00 00 00 00 h

-117,25 = 1100 0000 0000 0101   1110 1010 1000 0000 .. .0000b

- 117.25= C0 05 EA 80 00 00 00 00 00 00h

Контрольні питання

  1.  З якими дійсними даними працює співпроцесор (платформа WIN16)?
  2.  Що таке характеристика?
  3.  Машинні формати дійсних даних.
  4.  Діапазон допустимих значень для дійсних даних.
  5.  Що може означати, наприклад, машинне представлення 0F6549FDCh, і в якому  форматі?

Приклад розв’язання  типового варіанту

Варіант № 45.

Базові числа: X = ± 60, Y = ± 4567.

№ п\п

Базове число

Ціла частина

Дробова частина

Числа варіанту

1

60.4567

60+45 =105

4567+45=4612

105.4612

2

60.4567

60-45 =15

4567-45=4522

15.4522

3

-60.4567

-60+45 =-15

-4567+45=-4522

-15.4522

4

-60.4567

-60-45 =-105

-4567-45=-4612

-105.4612

Переведення десяткових чисел в двійкову систему числення

  1.  105.4612

Переведемо окремо цілу і дробову частини числа.

105d = 110 1001b

Тепер переведемо в двійкову систему числення правильний десятковий дріб 0.46126. Для перевірки представлення в 32-х бітовому форматі нам достатньо 24-х біт в мантисі (зробимо із запасом - 26 біт) :

0.4612 = 0.0111 0110 0001 0001 0011 0100 00 b

№ біта

Біт

 Мантиса (Dec)

 Множник

0

4612

2

1

0

9224

2

1

8448

3

1

6896

4

1

3792

5

0

7584

6

1

5168

7

1

0336

8

0

0672

9

0

1344

10

0

2688

11

0

5376

12

1

0752

13

0

1504

14

0

3008

IS

0

6016

16

1

2032

17

0

4064           

18

0

8128           

19

1

6256

20

1

2512

21

0

5024

22    

1

0048

23    

0

0096

24

0

0192

25

0

0384

26    

0

0768           

Таким чином: 105.4612 d = 110 1001.0111 0110 0001 0001 0011 0100 00b

Числа 2,3,4 формуються аналогічно.

Отримані дані зведемо в таблицю.

Таблиця  двійкового нормалізованого представлення дійсних чисел.

Десяткове

дійсне

число

Двійкове дійсне

число

Нормалізоване двійкове дійсне

число

105.4612

110 1001.01110110000100010011010000

1.1010010111011000010001001101 * 26

Внутрішнє представлення дійсних чисел.

  1.  Формат Dword (32 біта).

Відповідає типу даних float мови програмування С++ .  

105.4612 = 1.1010010111011000010001001101 * 26

Характеристика = 7F + 6 =85 h = 1000 0101 b. 

0

10000101

101001011101100001000100110 1000

0

0

Тепер розпишемо по тетрадах, а потім в НЕХ-коді:

0100

0010

1101

0010

1110

1100

0010

0010

4

2

D

2

E

C

2

2

   

  

  1.  Формат Qword (64 біта)

Відповідає типу даних double мови програмування С++ .  

105.4612 = 1.1010010111011000010001001101 * 26

Характеристика = 3FF + 6 = 405 h = 100 0000 0101 b.

0

100 0000 0101

1010 0101 1101 1000 0100 0100 1101  

0

0

Тепер розпишемо по тетрадах, а потім в НЕХ-коді:

0100

0000

0101

1010

0101

1101

1000

0100

0100

1101

4

0

5

A

5

D

8

4

4

D

Отримати усі розряди мантиси мі не зможемо, оскільки немає інформації. Таким чином,  число 105.4612 представлено нами з втратою точності. Для виходу з ситуації, необхідно точніше перевести мантису числа 0.4612 в двійкову систему числення (множити на число 2 не 26 разів, а, наприклад, 56).

  1.    Формат Tbyte

Відповідає типу даних long  double мови програмування С++ .  

У мантиси числа немає прихованого розряду.

105.4612 = 1.1010010111011000010001001101 * 26

Характеристика = 3FFF + 6 = 4005 h = 100 0000 0000 0101 b. 

0

100 0000 0000 0101

1

1010 0101 1101 1000 0100 0100 1101  

0

0

Тепер розпишемо по тетрадах, а потім в НЕХ-коді:

0100

0000

0000

0101

1101

0010

1110

1100

0010

0010

0110

1000

...

4

0

0

5

D

2

E

C

2

2

6

8

Знову отримати усі розряди мантиси ми не зможемо, оскільки немає інформації. Але і того, що є, цілком достатньо.

Текст програми.

TITLE     Модуль Int.asm

.386

.model flat,stdcall

ExitProcess  PROTO  :DWORD

;--------------------------------------------

.data

; float (DWord)

f DWORD 105.4612

DWORD 105

DWORD 105.

;---------------------------double (QWord)

d     QWORD 105.4612

;---------------------------long double (TWord)

t TBYTE 105.4612

;----------------------------------------------

.code

main proc

 INVOKE ExitProcess,0

main endp

end main


Лістинг програми.

   

TITLE     Модуль Int.asm

   .386

   .model flat,stdcall

   ExitProcess  PROTO  :DWORD

   ;--------------------------------------------

00000000   .data

   ; float (DWord)

00000000 42D2EC22  f DWORD 105.4612

00000004  00000069  DWORD 105

00000008  42D20000  DWORD 105.

   ;---------------------------double (QWord)

0000000C   d      QWORD 105.4612

   405A5D844D013A93

   ;---------------------------long double (TWord)

00000014   t TBYTE 105.4612

   4005D2EC226809D49518

   ;---------------------------------------------

00000000   .code

00000000   main proc

     INVOKE ExitProcess,0

00000007   main endp

   end main

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

Зверніть увагу на внутрішнє представлення чисел 105 і|та| 105.     !!!

PAGE  4

FILENAME \p C:\TEXNICUM_2012\ASM_2012\Lesson_ASM_04_formaty_dannyh_FLOAT_Lec_LAB\Lec\ASM_05_float_LECTURE_ukr1.doc  DATE \@ "M/d/yyyy" 11/3/2012




1. Банки Кредитно-финансовая система
2. Контрольная работа- Таможенный контроль Российской Федерации
3.  п
4. Проблема Отцов и детей
5. Организационная культура- понятие, элементы и функции
6. Реферат- Надзор за исполнением законов судебными приставами
7. го президента США до избрания его президентом ОГЛАВЛЕНИЕ [1] Глава 1Первы
8. Курсовая работа- Коллизионные вопросы наследования
9. Константа Наиболее часто используют такие константы как Наименование предприятия Ставка НДС ФИО г
10. Шпоры по общему праву
11. I Круг идей ПЛ Чебышева
12. і ~нерк~сіптік ~имараттар депна~ты ~нім немесе шикізат т~рлерін ~ндіруімен тікелей ж~не жанама байланыст
13. ГеленджикКраснодарГеленджик Январь 2014 г1
14. Административно-правовой статус управления Федеральной службы Российской Федерации по контролю за оборотом наркотиков
15. Курсовая работа- Сущность понятия аукцион и его роль в мировой торговл
16. Задание 1 От звука к букве Ответы
17. статья След статья Преобразование в сфере занятости населения являются одним из условий рыночной трансфо
18. менеджмент как наука выделился в самостоятельную область знаний слово
19. психическое состояние малыша еще неустойчиво и непрочно
20. тема уравнений где некоторые функции некоторые известные значения x набор неизвестных искомых п