Головна Головна -> Підручники -> Підручник Вивчаємо FrontPage скачати онлайн-> 3. Комп’ютерна арифметика

3. Комп’ютерна арифметика



Одиниці вимірювання інформації

Вся інформація в пам’яті цифрового комп’ютера зберігається в двійковій формі, тобто у вигляді послідовностей нулів та одиниць. Причина цього полягає в особливостях фізичної реалізації, при якій електронні елементи цифрового комп’ютера можуть перебувати в одному з двох стійких станів: ВИСОКА НАПРУГА – НИЗЬКА НАПРУГА, або Є СТРУМ – НЕМАЄ СТРУМУ тощо. Втім, відомі спроби побудувати цифровий комп’ютер на основі інших систем числення, наприклад, трійкової.
Мінімальною одиницею інформації є біт – один двійковий розряд, достатній для того, щоб закодувати одне з двох можливих значень – 0 або 1. Вісім бітів складають один байт; за допомогою одного байту можна закодувати один з 28 = 256 символів.Більш великими одиницями кількості інформації є кілобайт (дорівнює 210=1024 байтам), мегабайт (1024 кілобайт), гігабайт (1024 мегабайт).
Необхідно звернути увагу на таке важливе питання. Як зазначалося, вся інформація в цифровому комп’ютері зберігається у вигляді послідовностей бітів і байтів. Як повинна інтерпретуватися, наприклад, послідовність 01000001 ? Іншими словами, звідки процесор може знати, що означає ця послідовність – двійковий запис числа 65 чи ASCII-код літери A?
Тут слід розуміти, що фон-нейманівська архітектура не задає ніяких апаратно реалізованих апріорних правил для того, щоб визначити, що означають послідовності бітів. Правила інтерпретації двійкових кодів повністю залежать від конкретної програми.

Поняття про позиційні системи числення

Загальновживана “арабська” система запису чисел є типовим прикладом позиційної системи числення. Для позиційних систем числення характерним є те, що значення кожної цифри залежить від її положення у числі. Ми використовуємо позиційну систему числення за основою 10 (десяткову систему). Це означає, що наймолодший (крайній справа) розряд цілого числа задає кількість одиниць, наступний – кількість десятків, далі – кількість сотен і т.д. Для комп’ютера більш типовою є двійкова система (за основою 2). Існують непозиційні системи; такою є, наприклад, римська система числення.
Формально позиційну систему числення можна визначити так. Нехай зафіксоване ціле число b і 2, яке називається основою системи числення. Будь-яке ціле число M задається у позиційній системі числення за основою b у вигляді послідовності розрядів anan-1…a0, причому всі ai цілі, і 0 ≤ ai ≤ b-1. Значення числа обчислюється на основі цього задання за формулою:

M = a0+ a1b+ a2b2 + … + anbn.
Крайній правий розряд зі значенням a0 називається молодшим розрядом, а крайній лівий зі значенням an – старшим розрядом. Число М за основою b позначається як Mb або (M)b. Якщо основа не вказана явно, вважається, що вона дорівнює 10.

Приклади.

709710 =7 + 9*10 + 0*102 + … + 7*103.
1001102 = 0 + 1*2 + 1*22 + 0*23 + 0*24 + 1*25.

Двійкова система числення

Будь-яке число у двійковій системі числення записується у вигляді певної послідовності нулів та одиниць. Додавання однорозрядних двійкових чисел здійснюється за такими правилами:
0+0 = 0; 0+1 = 1+0 =1; 1+1 = 10 (одиниця переноситься в старший розряд).
З урахуванням цих правил арифметичні операції над двійковими числами (додавання, віднімання, множення, ділення) здійснюються аналогічно до звичних десяткових операцій. Для прикладу додамо “стовбчиком” двійкові числа 11 і 101:
1 0 1
+
1 1
1 0 0 0

Для самоперевірки виконаємо додавання десяткових еквівалентів. Двійковому числу 11 відповідає десяткове число 3, а двійковому 101 – десяткове 5. Сума 5+3 дорівнює 8, що в двійковій системі числення записується як 1000. Отже, обчислення виконані правильно.Наведемо в загальних рисах правила переведення чисел з двійкової системи до десяткової і навпаки (нагадаємо, що ми розглядаємо лише цілі числа).
Алгоритм переведення чисел з двійкової системи до десяткової безпосередньо спирається на визначення позиційної системи числення. Всі розряди домножуються на відповідні ступені двійки (крайній спава – на 1, наступний – на 2 і т.д), після чого отримані добутки додаються за правилами десяткової системи.
Приклад.
(101011)2 = 1+ 2*1 + 4*0 + 8*1 + 16* 0 + 32*1 = 43.

Для спрощення обчислень можна використовувати такий корисний практичний прийом: записати над кожним розрядом його вагу і знайти суму чисел, які стоять над ненульовими розрядами. Проілюструємо цей прийом на цьому ж прикладі:
32 16 8 4 2 1 43
1 0 1 0 1 1

Переведення цілого числа з десяткової системи числення до двійкової здійснюється шляхом його послідовного цілочисельного ділення на 2, поки в частці не вийде 0. Остачі від ділень, якщо їх прочитати справа наліво, утворюють число в двійковій системі (перша остача записується в молодший, тобто крайній справа, розряд, друга – в наступний за ним і т.д).Спробуйте самостійно перевести за наведеним алгоритмом десяткове число 43 до двійкової системи числення.

Шістнадцяткова система числення

Двійкове подання чисел є надто громіздким. Так, ми бачили, що для запису десяткового числа 43 потрібно аж 6 двійкових розрядів. Тому в програмуванні і в комп’ютерній літературі широко використовується шістнадцяткова система числення – позиційна система числення за основою 16. Оскільки 16 = 24, переведення чисел з двійкової системи до шістнадцяткової спрощується: одній шістнадцятковій цифрі відповідає чотири двійкових розряди, причому ця відповідність є взаємно однозначною.Десятковим числам від 0 до 9 відповідають такі самі шістнадцяткові цифри. Дворозрядне десяткове число 10 позначається однією шістнадцятковою цифрою зі значенням A, 11 – B, 12 – C, 13 – D, 14 – E, 15 – F.

Приклади.

(25)16 = 5 + 2*16 = 37.
(С3)16 = 3 + 12*16 = 3 + 192 = 197.

Двійкове кодування десяткових чисел

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

·                      переведення числа до двійкової системи числення так, як було описано вище;

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

Iснує велика кількість різних двійково-десяткових кодів, які знаходять практичне застосування: зважені коди, код з надлишком 3, код Грея та ін. Найбільш вживаним є код (8-4-2-1), який відноситься до класу чотирирозрядних зважених кодів. Це означає, що кожна десяткова цифра N взаємно однозначно кодується чотирма двійковоми розрядами x1x2x3x4. Кожному двійковому розряду приписується певна вага w1. Для коду (8-4-2-1) w4=1, w3=2, w2=4, w1=8. Тоді
N = 8* x1 + 4* x2 + 2* x3 + x4 .
Практично ж двійково-десятковий (8-4-2-1) код будується за таким правилом: кожна десяткова цифра незалежно від інших цифр замінюється своїм двійковим еквівалентом, тобто кожна десяткова цифра переводиться до двійкової системи незалежно від інших цифр.

Приклад.

Двійково-десятковий (8-4-2-1) код числа 43 запишеться у вигляді 01000011.

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

При здійсненні обчислень, звичайно, доводиться мати справу не тільки з цілими невід’ємними числами, але також з від’ємними і дробовими.
У програмуванні виділяють два типи чисел: беззнакові та знакові.Всі беззнакові числа вважаються невід’ємними, і всі їх розряди використовуються для задання абсолютної величини числа. Так, за допомогою одного байту можна закодувати цілі беззнакові числа від 0 до 255.
Для представлення ж від’ємних чисел слід виділити один біт для знаку. Як правило, це старший біт. Якщо один біт в числі виділяється під його знак, таке число називається знаковим. Як правило, 0 у старшому (крайньому зліва) біті відповідає додатнім числам, а 1 – від’ємним.
Представлення від’ємних чисел залежить від кількості байтів, яка відводиться на число. Для визначеності будемо розглядати однобайтові знакові числа.
Виділяють три основних способи представлення від’ємних чисел:

·                      прямий код, який утворюється з коду відповідного додатного числа шляхом встановлення знакового біта в 1;

·                      обернений код, який утворюється шляхом заміни значення кожного біта на протилежне;

·                      додатковий код, який утворюється шляхом додавання 1 до молодшого біта оберненого коду.

Приклад.

Розглянемо число -3.Двійковим еквівалентом відповідного додатного числа 3 є 00000011.

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

Обернений код. Замінимо кожний біт на протилежний (1 на 0; 0 на 1); результатом буде 11111100.

Додатковий код. Додамо 1 до оберненого коду; в результаті вийде 11111101. Зверніть увагу, що якщо якщо розглядати послідовність 11111101 як беззнакове, а не як знакове число, вона інтерпретується як додатнє число 253.

Для дійсних чисел виділяють два основні формати представлення:

·                      з фіксованою точкою: положення десяткової точки фіксується програмним шляхом; тоді все, що знаходиться зліва від точки, вважається цілою частиною, а все, що справа – дробовою;

·                      з плаваючою точкою: цей формат застосовується для операцій з дуже великими або дуже маленькими числами; грунтується на поданні у вигляді a*10b; a називається мантисою, а b – порядком. Мантиса і порядок зберігаються окремо.








Популярні глави цього підручника:



Всі глави цього підручника:

Вивчаємо FrontPage