asyan.org
добавить свой файл
1
Методичні вказівки до лабораторної роботи №2.

Тема. Дії над числами у двійковій системі числення

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

Теоретичні відомості.

1. Системи числення

 У цифровій техніці вся інформація незалежно від її характеру представляється в числовій формі, причому використовуються тільки позиційні системи числення. У цих системах будь-яке ціле позитивне n-розрядне число записується у вигляді послідовності n цифр Xn-1Xn-2..X1X0. Число a (0, 1, 2, ..., a - 1), приймається для представлення цифр, що визначають основу системи числення. Внесок цифри в число залежить як від цієї основи, так і від займаної нею позиції (розряду) у послідовності цифр. Цифра xk входить з вагою ak і означає xkak, а вся послідовність цифр Хn-1Хn-2 ... X1Х0 виражає в системі числення з основою а число

xn-1 a n-1+ xn-2 a n-2+…+ x1 a 1+ x0 a0.

Звична десяткова система (а = 10) використовує цифри 0, 1, 2, .... 9. Наприклад, 3175 = 3 * 103+ 1 * 102+ 7 * l01 + 5 * 100. В обчислювальній техніці переважне значення отримала двійкова система числення, для якої використовуються цифри 0 і 1. Двійковий розряд, що представляє собою найменшу кількість інформації, називається бітом. Послідовність двійкових цифр Хn-1Хn-2 ... X1Х0 служить записом двійкового числа

xn-1 2 n-1+ xn-2 2 n-2+…+ x1 2 1+ x0 20.

Серед інших систем числення найчастіше використовуються вісімкова і шістнадцяткова. У вісімковій системі цифри представляються тими ж символами, що й у десятковій, а в шістнадцатятковій системі до них додаються ще шість символів А, В, С, D, Е, F, що відповідають десятковим числам 10, 11, 12, 13, 14, 15.

Арифметичні операції над числами в будь-якій системі числення виконуються за такими правилам, що й у десятковій системі.

 ^ 2. Перетворення чисел

 Найчастіше необхідно переводити десяткові числа в двійкові і навпаки, що можна виконати за допомогою універсального алгоритму, який застосовується окремо для цілої і дробової частин. Переведення цілої частий десяткового числа в двійкову систему зводиться до запису в зворотному порядку залишків (0 чи 1), що одержані при діленні вихідного числа і кожної наступної частки на два. Дробова частина виходить з цілих частин (0 чи 1) при її послідовному множенні на два, причому таке множення продовжується до тих пір, поки дробова частина не буде дорівнювати 0 або буде отримана необхідна кількість знаків після розділової коми, наприклад, 26,312510= 11010,01012

http://radio-vtc.inf.ua/mps/lesson/l0_2012.files/image003.gif

Рисунок 1 – Переведення десяткового числа в двійкове

Зворотне перетворення двійкового числа в десяткове можна виконати аналогічно з тим розходженням, що ділити і множити потрібно на 10 у двійковій системі, тобто на 10102 (рисунок 2). Як видно, при використанні такого алгоритму цифри десяткового еквівалента двійкового числа представляються спочатку в двійковій системі. Для кожного десяткового розряду відводяться чотири двійкових розряди (тетрада). Тоді двійково-десятковий запис числа має вид:

26,3125 = 0010 0110,0011 0001 0010 0101.

http://radio-vtc.inf.ua/mps/lesson/l0_2012.files/image005.jpg

Рисунок 2 – Переведення двійкового числа в десяткове

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

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

53278 = 101 011 010 111

2DF916 = 0010 1101 1111 1001

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

1101010,11101 = 001 101 010,111 010 = 152,728

1101010,11101 = 0110 1010,1110 1000 = 5А,D816

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

^ 3. Машинне слово

Сигнали, що грають роль носіїв інформації, представляються в цифрових системах послідовностями біт (байт), що поєднуються в слова. Довжина слова може бути будь-якою (від 4 до 128 біт). Цифрові сигнали можуть представлятися в двох формах: з фіксованої або з плаваючою комою. При представленні числа у формі з фіксованої комою n-розрядне слово розбивається на три частини. Перший біт використовується для знака (0 для позитивних чисел і 1 для негативних). Інші розряди розподіляються між цілою і дробовою частинами числа з твердим положенням місця розділення, тобто вказівкою кількості розрядів, що відводяться. Якщо для дробової частини виділено m біт, то найбільше по абсолютній величині число не може перевершувати (2n-1-1)2-m. Обмеження діапазону чисел, що представляються, і тверде розташування фіксованої коми – основні недоліки такого способу, що можуть привести до втрати точності при виконанні арифметичних операцій унаслідок переповнення.

http://radio-vtc.inf.ua/mps/lesson/l0_2012.files/image007.jpg

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

 

Більш зручною є форма з плаваючою комою. Вона заснована на співвідношенні N = М*2E , де М – мантиса, E - порядок числа N. Величини М та Е можуть бути як позитивними, так і негативними, але М завжди дробове число, менше одиниці, а Е – ціле число. Обидві ці величини представляються як цілі числа і для кожного з них (включаючи знаки) приділяється в слові визначена кількість розрядів. При цьому розрядність мантиси впливає на точність, а розрядність порядку – на діапазон чисел, що представляються.

Зрушення мантиси на один розряд ліворуч збільшує, а праворуч – зменшує її вдвічі. Щоб такі зрушення не впливали на значення числа, необхідно зменшити або збільшити порядок на одиницю. Зрушення мантиси ліворуч допустимо тільки при наявності старшого нульового розряду. Якщо ж старший розряд дорівнює 1, то це відповідає максимально можливому значенню даної мантиси, що лежить у діапазоні 2-1 <М< 1. Числа з таким представленням мантиси називають нормалізованими, і вони найчастіше використовуються в обчислювальних системах. Процес нормалізації складається в зрушенні числа на необхідну кількість розрядів ліворуч або праворуч з відповідним зменшенням або збільшенням порядку. Якщо мантиса і порядок нормалізованого числа, займають відповідно р и q розрядів, то мінімальне і максимальне значення (у десятковому записі) визначають діапазон представлення чисел Nmіn < N < Nmax

http://radio-vtc.inf.ua/mps/lesson/l0_2012.files/image009.gif та http://radio-vtc.inf.ua/mps/lesson/l0_2012.files/image011.gif.

У цьому відношенні форма з плаваючою комою краща.

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

 ^ 4. Додавання та віднімання двійкових чисел

 

Додавання цілих багаторозрядних чисел у двійковій системі числення робиться порозрядно. У результаті додавання 1 + 1 одержуємо 102 = 210. Для представлення такого результату потрібно два розряди; при цьому з молодшого розряду в наступний, більш старший розряд, надходить одиниця переносу. Перенос додається до відповідного розряду чисел, що додаються (рисунок 4).

http://radio-vtc.inf.ua/mps/lesson/l0_2012.files/image013.jpg

Рисунок 4 – Схема додавання цілих багато розрядних чисел

Додавання здійснюється послідовно, починаючи з молодшого розряду. У кожному розряді додаються значення трьох величин: розряду операнда аі, розряду операнда bі та переносу з попереднього розряду pi-1. У результаті додавання в кожному розряді одержуємо дві величини: значення суми sі, значення переносу в наступний, більш старший розряд pі. У розглянутому прикладі при додавання чисел А = 3910 = 1001112 і В = 1310 = 0011012 отриманий результат S = 5210 = 1101002, який містить шість розрядів, тобто укладається в прийняту розрядну сітку. Додамо до отриманого результату 5210 (1101002) число 1310 (0111012):

 

110100

 

52

+

001101

+

13

 

1000001

 

65

У підсумку одержали число, що містить сім розрядів, старший з який відповідає розряду переносу, що знаходиться за межами розрядної сітки. Наявність одиниці в розряді переносу повідомляє про переповнення розрядної сітки.

Негативні числа можуть записуватися у виді прямих, зворотних або додаткових кодів. Знаковий розряд позитивних чисел дорівнює нулю, а негативних – одиниці, і відокремлюються від інших розрядів крапкою. Негативні числа переважно застосовуються у сучасних мікро-ЕОМ у додаткових кодах.

Операція одержання додаткового коду негативного числа з прямого коду називається операцією доповнення. Ця операція полягає в інвертуванні всіх розрядів вихідного коду (включаючи знаковий) і додаванні до молодшого розряду одиниці. Застосуємо операцію доповнення до прямого коду числа 0.1101002 = + 5210. Результат 1.001100 відповідає додатковому коду негативного числа -5210. Якщо до цього результату ще раз застосувати операцію доповнення, то знову одержимо вихідний код 0.110100.

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

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

Приклад 1. Додавання двох позитивних чисел:

 

0,100111

 

39

+

0,001101

+

13

 

0,110100

 

52

Результат не виходить за межі розрядної сітки і тому правильний.

Приклад 2. Додавання двох позитивних чисел:

 

0,110111

 

52

+

0,001101

+

13

 

1,000001



63

У результаті додавання вийшло негативне число –63, тобто результат додавання невірний, оскільки вірний результат + 65 виходить за межі розрядної сітки. Дійсно, прийнята розрядна сітка забезпечує представлення двійкових чисел у межах від 1.0000002 = – 6410 до 0.1111112 = +6310, а отримана сума + 65 перебуває за її межами.

Приклад 3. Додавання двох чисел з різними знаками:

 

1,001100



52

+

0,001101

+

13

 

1,011001



39

 

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

Приклад 4. Додавання двох чисел, рівних по модулі і різних за знаком:

 

1,011001



39

+

0,100111

+

39

 

10,000000

 

0

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

Приклад 5. Додавання двох негативних чисел.

 

1,011001



39

+

1,110011



13

 

11,001100



52

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

Приклад 6. Додавання двох негативних чисел:

 

1,001100



52

+

1,110011



13

 

10111111

+

63

Сума перебуває за межами розрядної сітки, тобто результат невірний і має позитивний знак. Одиницею в розряді переповнення ігноруємо.

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

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

-        якщо знак операндів однаковий, а знак суми йому протилежний, то результат буде некоректний;

-        із всіх інших випадках результат додавання вірний.

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

 

^ 5. Множення і ділення двійкових чисел з фіксованою комою

 

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

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

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

 

11012

 

1310

x

10112

 

1110

 

1101

 

13

 

1101

+

13

+

0000

 

143

 

1101

 

 

 

100011112

 

 

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

Найбільшу швидкість множення одержують у статичних множних пристроях, практична реалізація яких можлива завдяки наявності спеціальних пристроїв, які запам'ятовують таблиці множення багаторозрядних чисел. Однак зі збільшенням розрядності співмножників складність таких пристроїв швидко зростає. Тому даний спосіб множення можливий лише для чисел з порівняно невеликою кількістю двійкових розрядів.

В універсальних обчислювальних машинах, як правило, реалізується "шкільний" алгоритм ділення чисел. "Шкільний" алгоритм ділення полягає в тому, що дільник на кожному кроці віднімається від діленого стільки разів (починаючи зі старших розрядів), скільки це можливо для отримання найменшого позитивного залишку. Тоді в черговий розряд частки записується цифра, що дорівнює числу дільників, що містяться в діленому на даному кроці. При діленні операцію віднімання повторюють до тих пір, поки ділене не стане менше дільника. Існують і інші алгоритми, наприклад, алгоритм ділення з відновленням залишку та алгоритм ділення без відновлення залишку.



Завдання

  1. Перевести числа з десяткової у двійкову форму. Дійсні числа представити у форматах з фіксованою і плаваючою комою. Визначити кількість розрядів для представлення цих чисел. Результат перевірити зворотнім переведенням.

варіант

1

2

3

4

5

6

7

8

9

завдання

121

87,04

212

-26,51

124

67,93

222

-7,206

116

56,32

221

-76,49

163

26,06

225

-4,107

114

54,88

варіант

10

11

12

13

14

15

16

17

18

завдання

232

15,15

132

-48,19

202

54,78

142

-37,54

244

75,91

127

-54,37

276

96,12

173

-85,24

213

76,18



  1. Перевести число з двійкової в десяткову СЧ.

варіант

1

2

3

4

5

6

завдання

101101010

10101101

100011

1001110

100110

11010101

варіант

7

8

9

10

11

12

завдання

111011

111001

1100111

110011010

11110101

101010011

варіант

13

14

15

16

17

18

завдання

101111

110011001

111111

11101101

101011101

10010



  1. Записати двійкові числа з завдання №2 в оберненому і доповняльному коді.

  2. Отримати два числа Число№1 – дата народження, Число №2- місяць народження. Перевести ці числа у двійкову форму, виконати додавання, віднімання, множення отриманих чисел. Результат обчислення перевірити шляхом переводу одержаного двійкового числа, що повинно відповідати результатам арифметичних дій над десятковими числами, в десятковій системі числення.

  3. Знайти цілу частину від ділення двійкового числа 11010010 на 10*, замість зірочки підставити стільки одиниць, скільки цифр у номері вашого варіанту.

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

  1. Що називаємо позиційною системою числення?

  2. Сформулювати правило переведення десяткового числа у двійкове.

  3. Як перевести двійкове число у десяткове?

  4. Які числа називаються числами з фіксованою комою? З плаваючою комою?

  5. Призначення прямого, оберненого та додаткового кодів.

  6. Особливості подання до ЕОМ від’ємних чисел.

  7. Правила виконання арифметичних операцій над двійковими числами.