Download as pdf or txt
Download as pdf or txt
You are on page 1of 57

Міністерство освіти і науки України

Національний університет “Львівська політехніка”


Кафедра САПР
Алгоритмізація та програмування,
частина 1:

Числа, системи числення,


математична логіка
ЛЕКТОР:
асистент каф. САПР, к.т.н.
Яворський Назарій Борисович
E-Mail: nazarii.b.yavorskyi@lpnu.ua

Львів - 2020
Числа, системи числення, математична логіка

Числа
• У повсякденному житті розумні істоти зустрічаються з такими задачами як
щось:
• порахувати;
• поміряти.

• Для розв’язку цих задач використовується уявна математична абстракція –


число.
• Символи, які використовуються для позначення чисел називаються
цифрами.
• Існують різні способи позначати одні і ті ж числа. Такі способи називаються
системами числення.
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 2
Числа, системи числення, математична логіка

Системи числення
• На сьогоднішній момент формально їх можна розділити на:

•непозиційні

•позиційні

•змішані

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 3
Числа, системи числення, математична логіка

Трішки історії
• Числа первісно розвивалися з використання знаків підрахунку за допомогою
частин тіла, насамперед пальців.
• Першими цифрами були засічки на каменях чи інших поверхнях. Найдавніші
знахідки мають вік від 35 000 до 25 000 років.

використовуються в культури, що використовують


більшості країн Європи, китайські символи,
Зімбабве, Австралії, утворюють символ 正, який
Новій Зеландії та складається з п'яти штрихів.
Північній Америці.

використовуються у
Франції, Іспанії, їх
колишніх колоніях та
Бразилії. Позначають
числа 1 – 5, тощо.
Найчастіше
використовуються для
реєстрації балів у
карткових іграх
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 4
Числа, системи числення, математична логіка

Трішки історії
• Вавилонські цифри (від 3000 р. до н.е.)— цифри, що
використовувалися вавилонянами в своїй шістдесятковій
системі числення. Записувалися клинописом на глиняних
табличках, поки глина була ще м'яка, дерев'яною паличкою
для письма або загостреним очеретом.
• Для запису чисел використовувалися всього два знаки:
прямий клин для позначення одиниць і лежачий клин для
позначення десятків всередині шістдесяткового розряду.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 5
Числа, системи числення, математична логіка

Трішки історії
• Єгипетська система числення — непозиційна система числення, яка вживалася в
Стародавньому Єгипті аж до початку X ст. У цій системі цифрами були
ієрогліфічні символи; вони позначали числа 1, 10, 100 і т. д. до мільйона. Числа,
не кратні 10, записувалися шляхом повторення цих цифр. Кожна цифра могла
повторюватися від одного до 9 разів.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 6
Числа, системи числення, математична логіка

Трішки історії
• Римська система числення, або Римські цифри (від Х ст. до н.е.)—
непозиційна система числення, базується на використанні особливих знаків
(літер латинської абетки) для десяткових розрядів
I = 1, X = 10, С = 100, М = 1000 та їх половин V = 5, L = 50, D = 500.
Числа записуються за допомогою повторення цих цифр. При цьому, якщо
більша цифра стоїть перед меншою, то вони додаються (принцип
додавання), якщо ж менша перед більшою, то менша віднімається від
більшої (принцип віднімання). Останнє правило застосовується тільки для
уникнення чотириразового повторення однієї цифри. Було введене в XIX ст.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 7
Числа, системи числення, математична логіка

Трішки історії
• Індо-арабська система
числення - є позиційною
десятковою системою
числення, розроблена у
I-IV століттях
індійськими
математиками. Цифри
виникли в Індії і в X-XIII
ст. були занесені в
Європу арабами, через
що часто згадуються як
«арaбські»

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 8
Числа, системи числення, математична логіка

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

ІІІ-VІІ століття

ІХ століття
Сьогодні

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 9
Числа, системи числення, математична логіка

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


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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 10
Числа, системи числення, математична логіка

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


• Основою системи числення називається число, яке означає, у скільки разів
одиниця наступного розрядку більша за одиницю попереднього.
• Загальновживана форма запису числа є насправді не що інше, як скорочена
форма запису розкладу за степенями основи системи числення, наприклад:
130678 = 1 × 105 + 3 × 104 + 0 × 103 + 6 × 102 + 7 × 101 + 8 × 100
• Тут 10 є основою системи числення, а показник степеня – це номер позиції
цифри в записі числа (нумерація ведеться зліва на право, починаючи з
нуля). Арифметичні операції у цій системі виконують за правилами,
запропонованими ще в середньовіччі. Наприклад, додаючи два
багатозначних числа, застосовуємо правило додавання в стовпчик. При
цьому все зводиться до додавання однозначних чисел, для яких необхідним
є знання таблиці додавання.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 11
Числа, системи числення, математична логіка

Математична логіка
• Джордж Буль - британський математик і філософ,
формалізував алгебру логіки (Булева алгебра, Булева
логіка, двійкова логіка, двійкова алгебра, англ. Boolean
algebra) - розділ математичної логіки, що вивчає
систему логічних операцій над висловлюваннями.
• В алгебрі логіки значенням змінних є значення
істинності істина або хибність, які як правило
визначаються як 1 і 0 відповідно.
• У 1854 р. побачив світ основний твір Буля
«Дослідження законів думки, на яких засновані
математичні теорії логіки й імовірності»:
якщо x="рогаті", а y="вівці", то послідовний
вибір x і y дасть клас рогатих овець
• Буль показав, що символіка такого роду підкоряється тим же законам, що й
алгебраїчна, з чого випливало, що словесні, чи то логічні вирази можна
"додавати", "віднімати", "множити" й навіть "ділити". У такій символіці
висловлювання можуть бути зведені до форми рівнянь.
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 12
Числа, системи числення, математична логіка

Математична логіка
• На відміну від елементарної алгебри, в якій значеннями змінних є числа, а
основними операціями є додавання і множення, основними операціями
Булевої алгебри є кон'юнкція (операція І, еквівалент множення) -
позначається як ∧, диз'юнкція (операція АБО, еквівалент додавання) -
позначається як ∨, і заперечення (операція НІ) позначається як ¬. Таким
чином формалізм для описання логічних відношень є аналогічним тому, як
описуються числові відношення у елементарній алгебрі.
• В той час як в елементарній алгебрі
вирази як правило виражаються в числах,
в алгебрі логіки вони виражають
значення істинності висловлювання –
"істина" і "хибність". Ці значення задають
за допомогою біт (або двійкових чисел,
англ. binary digit - bit), а саме 0 та 1.
Алгебра логіки також вивчає функції, що
приймають значення в множині ,0, 1-.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 13
Числа, системи числення, математична логіка

Математична логіка
• кон'юнкцію можна визначити через операції заперечення та диз'юнкцію, і
навпаки (правила де Моргана):

• Три булеві операції описані вище називають базовими або первинними, що


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

• еквівалентність:

• виключна диз'юнкція
(часто задається як абревіатура XOR):

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 14
Числа, системи числення, математична логіка

Прикладне застосування математичної логіки


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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 15
Числа, системи числення, математична логіка

Прикладне застосування математичної логіки

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 16
Числа, системи числення, математична логіка

Прикладне застосування математичної логіки

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 17
Числа, системи числення, математична логіка

Прикладне застосування математичної логіки


• Напівсуматор — логічна схема з двома входами та двома виходами, яка виконує
операцію арифметичного додавання двох однорозрядних чисел A та B з
формуванням виходу переносу. Схема носить назву «напівсуматор», оскільки
при реалізації одного розряду повного двійкового суматора слід враховувати
також вхід переносу з попереднього розряду, для чого необхідно використати
дві таких схеми та один елемент «АБО».

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 18
Числа, системи числення, математична логіка

Прикладне застосування математичної логіки


КМОН (комплементарна
структура метал-оксид-
напівпровідник) - інвертор

Мікропроцесор Intel-8080

Схема двовходового ТТЛ


(Транзисторно-транзисторна
логіка)-елемента 2І-НЕ

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 19
Числа, системи числення, математична логіка

Трійкове числення
• Трійковий комп'ютер (англ. ternary або англ. trinary computer) — комп'ютер,
який використовує для проведення обчислень тризначну логіку замість більш
поширеної бінарної логіки. За аналогією з бітом, трійковою цифрою є трит (англ.
trinary digit).
• При додаванні тритів у трійкових півсуматорах і суматорах кількість додавань
приблизно в 1,5 разу менша, ніж при додаванні бітів у бінарних півсуматорах та
суматорах і, отже, швидкодія при додаванні приблизно в 1,5 разу більша.

• Це пояснюється тим, що щільність запису


інформації

• де х – основа системи числення. Тому


найбільшою щільністю запису інформації
володіє система числення з основою
рівною основі натурального логарифму,
тобто числу Ейлера (е=2,71…).

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 20
Числа, системи числення, математична логіка

Трійкове числення
• Для зображення цілих чисел від 1 до 9999 у десятковій системі достатньо
чотирьох розрядів, тобто чотирьох елементів. Оскільки кожен елемент може
перебувати в десятьох станах, то загальна кількість станів – 40,
• у двійковій системі числення: 999910=100111000011112, необхідна кількість
станів – 28.
• 999910=1112011003, необхідна кількість станів – 27.

• Так, для запису цілих чисел від 1 до 109 у десятковій системі числення
потрібно 90 станів,
• у двійковій – 60,
• у трійковій – 57, що робить її оптимальнішою за двійкову.
• Але трійкова система числення не дістала поширення внаслідок труднощів
фізичної реалізації.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 21
Числа, системи числення, математична логіка

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


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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 22
Числа, системи числення, математична логіка

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


• Одним бітом можна виразити два поняття: 0 або 1 (ні або так, хибне або
істинне). Якщо кількість бітів збільшити до двох, то тоді можна закодувати
чотири поняття : 00, 01, 10, 11. Трьома бітами кодують вісім понять. Збільшуючи
на одиницю кількість розрядів в системі двійкового кодування, збільшуємо в два
рази кількість значень, які можуть бути виражені в цій системі кодування, тобто
кількість значень вираховується за формулою
N = 2m, де N – кількість незалежних значень, що кодуються, m – розрядність
двійкового кодування.
• Найменшою одиницею об’єму даних прийнято вважати байт – групу з 8 бітів.
• Історично розмір байта залежав від апаратного
забезпечення і не існувало жодних чітких стандартів,
які б визначали його розмір. У минулому
використовувалися байти розміром від 1 до 48 бітів.
• У мовах програмування байт є найменшою кількістю
бітів, яка використовується для кодування одного
текстового символу.
• Він є найменшою адресною одиницею пам'яті в
архітектурах комп'ютера.
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 23
Числа, системи числення, математична логіка

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


• IEEE SA – 1541-2002.– IEEE Standard for Prefixes for Binary Multiples:

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 24
Числа, системи числення, математична логіка

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


• IEEE SA – 1541-2002.– IEEE Standard for Prefixes for Binary Multiples:

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 25
Числа, системи числення, математична логіка

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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 26
Числа, системи числення, математична логіка

Переведення між 2-,8- та 16-системами числення


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

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


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

• Якщо основа однієї системи числення дорівнює деякому степеню іншої, то


перевід тривіальний.
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 27
Числа, системи числення, математична логіка

Переведення між різними позиційними системами


• Для переведення чисел із системи числення з основою p в систему числення
з основою q, використовуючи арифметику нової системи числення з
основою q, потрібно записати коефіцієнти розкладу, основи степенів і
показники степенів у системі з основою q і виконати всі дії в цій самій
системі. Наприклад:
• з шістнадцяткової в десяткову:

• з вісімкової в десяткову:

• з двійкової в десяткову:

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 28
Числа, системи числення, математична логіка

Переведення між різними позиційними системами

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 29
Числа, системи числення, математична логіка

Переведення між різними позиційними системами


• Для переведення чисел із системи числення з основою p в систему числення
з основою q з використанням арифметики старої системи числення з
основою q потрібно:
• для переведення цілої частини: послідовно число, записане в системі
основою p ділити на основу нової системи числення, виділяючи остачі.
Останні записані у зворотному порядку, будуть утворювати число в
новій системі числення;
• для переведення дробової частини: послідовно дробову частину
множити на основу нової системи числення, виділяючи цілі частини, які
й будуть утворювати запис дробової частини числа в новій системі
числення.
• Наприклад:

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 30
Числа, системи числення, математична логіка

Переведення між різними позиційними системами

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 31
Числа, системи числення, математична логіка

Двійково-десятковий код
• Двійково-десятковий код (ДДК, BCD, binary-coded decimal) — спосіб представлення
десяткового числа, у якому кожній цифрі відповідає певна послідовність двійкових розрядів.
Цей код спрощує ввід/вивід числа у десятковому вигляді, використовується у калькуляторах та
при роботі над числами з нерухомою комою (наприклад, з грішми) для забезпечення
належної точності підрахунків. Реалізація BCD-арифметики досить проста, тому вона присутня
у наборах інструкцій майже всіх мікропроцесорів та мікроконтролерів.
• Найпростішим варіантом є 8421-ДДК (BCD), який означає, що кожна цифра десяткового числа
записується своїм двійковим представленням з доповненням нулями до 4 розрядів (тетрада).
Наприклад, число 309110, при кодуванні у 8421-ДДК буде виглядати як
0011 0000 1001 0001 8421-ДДК

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 32
Числа, системи числення, математична логіка

Двійково-десятковий код

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 33
Числа, системи числення, математична логіка

Які бувають числа?


• Математики поступово розширювали набір усіх відомих чисел. Поява нових видів чисел і
числення тісно пов'язана з розвитком людського суспільства. Разом з тим, на кожне
розширення числової системи можна дивитися з математичної точки зору,
обґрунтовуючи таке розширення, як правило, розширенням можливостей виконувати
деяку математичну операцію.
• Натуральні числа (природні) — найдавніші числа, які стали використовувати люди, в
першу чергу при лічбі. Позначаються як N.
• Цілі числа — виникли на противагу числам, які позначають «нецілі» кількості, — дроби.
Утворюються на основі натуральних за допомогою введення нуля та від'ємних чисел.
Позначаються як Z.
• Раціональні числа (дробні) — є відношенням двох цілих
чисел. Позначаються як Q.
• Дійсні числа — описують дійсність, тобто зустрічаються в
природі. Утворюються сукупністю раціональних і
ірраціональних, тобто не дробних чисел, таких як корені
квадратних рівнянь, нескінченні дроби.
Позначаються як R.
• Комплексні числа (складені) — кожне комплексне число
можна трактувати як пару дійсних чисел.
Позначаються як C.
• Гіперкомплексні (кватерніони H, октоніони O,...)
• Кардинальні числа
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 34
Числа, системи числення, математична логіка

Які бувають числа?


• Математика існує у вигляді теоретичної і прикладної наук. Теоретична математика є
фундамент прикладної математики. У свою чергу прикладна математика є фундамент всіх
природничо-наукових і технічних дисциплін і в значній мірі дисциплін, пов'язаних з
людськими відносинами, наприклад, економіки.
• Комп'ютер і комп'ютерна технологія є технічна реалізація прикладної математики.
• Прикладній математиці використовується дещо інший набір чисел. Цей набір складається
з таких чисел:
• Ціле число.
• Раціональне число - раніше широко використовувалися, але в даний час вони майже
вийшли з використання, залишилося хіба що в англо-американській фінансовій
практиці, де до сих пір такі числа як 1/4, 3/8 нерідкі.
• Дійсне число - е, π, √2 і т.д. Особливість їх полягає в тому, що ми можемо визначити
їх подання в будь-якій системі числення з будь-яким ступенем детальності, з будь-
яким числом значущих розрядів. Але треба зазначити, що в прикладній математиці
кількість використовуваних дійсних чисел більше ніж обмежена і навряд чи
перевищить десяток.
• Метрологічне число - головні числа прикладної математики, вони виникають в
процесі вимірювань і характеризуються або відносною, або абсолютною похибкою.
Метрологічне число має, на відміну від чисел в теоретичній математиці, дві
характеристики - номінал і точність (похибка).
• Наближене число - характеризуються числом розрядів в їхньому представленні.
Основне джерело наближених чисел це математичні дії над іншими числами.
Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 35
Числа, системи числення, математична логіка

Які бувають числа в комп’ютері?

•Цілі

•Нецілі

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 36
Числа, системи числення, математична логіка

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


• У математиці, від'ємні числа в системі числення з будь-якою
основою позначаються за допомогою знака мінус («-») перед
ними. Проте, в комп'ютерній техніці, числа представляються
лише у вигляді послідовності бітів, без додаткових символів.
Існує чотири найвідоміших методи розширення двійкової
системи числення для представлення чисел зі знаком:
• прямий код,
• обернений код,
• доповняльний код,
• двійковий зсув.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 37
Числа, системи числення, математична логіка

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


• Прямий код
• Цей метод ще називають «знак та величина» (sign and magnitude), а про числа
записані в такому вигляді кажуть «знакова величина».
• В першому наближені, задача представлення знака числа зводиться до
виділення додаткового знакового біту, який відповідає знаку числа: значення
цього біту (зазвичай це старший біт) дорівнює 0 для додатного числа і 1 для
від'ємного. Решта бітів числа позначають величину числа (або абсолютне
значення). Тому в байті лише 7 біт (знаковий біт відокремлено) буде
використано для позначення величини, яка змінюється від 0000000 (0) до
1111111 (127).
• Таким чином, можна представляти числа від −12710 до +12710 якщо додавати
знаковий (восьмий) біт. Як наслідок, існує два способи представлення нуля, а
саме 00000000 (0) та 10000000 (−0). Для прикладу, −4310 у 8-бітномі кодуванні
буде 10101011.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 38
Числа, системи числення, математична логіка

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


• Обернений код
• Для переведення десяткового числа в обернений код спочатку необхідно
перевести його у двійкове представлення не зважаючи на знак, потім, якщо
число від'ємне, обернути всі біти (замінити 0 на 1 і навпаки).

• Враховуємо переповнення тільки, якщо


додається від’ємне число:

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 39
Числа, системи числення, математична логіка

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


• Доповняльний код (англ. two’s complement, «доповнення до 2») —
найпоширеніший спосіб представлення від'ємних чисел у комп'ютерах.
Дозволяє замість команди віднімання використовувати команду додавання, для
знакових і беззнакових чисел, що зменшує вимоги до архітектури комп'ютера.
Доповняльний код від'ємного числа можна отримати так: інвертувати модуль
• числа у двійковому вигляді («перше
доповнення») і додати одиницю («друге
доповнення») або відняти число від нуля.
• Математично доповняльний код
Xдоп = 2N+1 — X,
де X — число, яке треба представити у
доповняльному коді,
N — к-сть розрядів числа.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 40
Числа, системи числення, математична логіка

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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 41
Числа, системи числення, математична логіка

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


• Двійковий зсув
• це цифрова схема кодування,
де код з усіма нулями
відповідає мінімальному
негативному значенню, а код з
усіма одиницями —
максимальному позитивному
значенню.
• Немає чіткого стандарту для
двійкового зсуву, але
найчастіше зміщення для n-
бітового двійкового слова
використовується як K = 2n−1.
Це призводить до того, що
значення «нуль» переходить в
1 у найбільш значущих бітах, і
нуль — у всіх інших.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 42
Числа, системи числення, математична логіка

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


• Незважаючи на свою потужність, центральний процесор довший час не мав
апаратного пристрою для обчислень з нецілими числами.
• У програмістів був тільки арифметико-логічний пристрій, що обробляє цілі числа.
• У 60-ті та 70-ті роки не було єдиного стандарту представлення нецілих чисел,
способів округлення, арифметичних операцій. В результаті програми були вкрай не
портабельні.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 43
Числа, системи числення, математична логіка

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


• Математи́ чний співпроце́сор, або
модуль (блок) операцій з рухомою
комою (англ. Floating point unit,
FPU) — співпроцесор для
розширення системи команд
центрального процесора комп'ютера
командами для здійснення операцій
над числами з рухомою комою.
Може бути як у вигляді окремої
мікросхеми, так і інтегрованим у
кристал процесора.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 44
Числа, системи числення, математична логіка

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


• На сьогоднішній день використовується стандарт
IEEE Standard for Floating-Point Arithmetic (IEEE 754-2008). –
ISO/IEC/IEEE 60559:2011
• Він формалізує числа з плаваючою комою (крапкою)
• Цікаво, що в математиці взагалі немає такого виду чисел!
• Грубо кажучи (дуже грубо і абстрактно), «число з плаваючою комою» це синонім для
«число, записане в експоненційній формі»:

155,625 = 1∙27 +0∙26+0∙25+1∙24+1∙23+0∙22+1∙21+1∙20+1∙2-1+0∙2-2+1∙2-3


155,625 = 128 + 0 + 0 + 16 + 8 + 0 + 2 + 1 + 0,5 + 0 + 0,125
155,62510= 1 0 0 1 1 0 1 1, 1 0 12
1,55625∙10+2 = 1,0011011101∙2+111
Мантиса (significand) M=1,0011011101
Експонента(exponent) exp2= +111

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 45
Числа, системи числення, математична логіка

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


Дані з плаваючою комою у форматах обміну представляються k бітами за допомогою
трьох полів:
• 1-бітовий знак S (0 це “+”, 1 це “-”);
• w-бітовий зміщений порядок E = e + зміщення (в одинарній точності зміщення
дорівнює 127, у подвійній 1023) = 2(w-1) -1;
• t-бітовий (t = p−1) хвіст мантиси M = d1d2...dp−1; ведучий біт мантиси d0, неявно
закодований у зміщеному порядку E.
Для представлення у цьому форматі двійкове число спочатку нормалізується, тобто
приводиться до такого вигляду, коли мантиса потрапляє в діапазон
1 ≤ m < 2. Таким чином ціла частина нормалізованої мантиси завжди дорівнює 1 (Нуль
не підходить, а інших варіантів немає). Значить, можна заощадити на цьому біті d0 - не
зберігати, а тільки мати на увазі його наявність. Нуль розглядається як окремий
випадок.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 46
Числа, системи числення, математична логіка

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


Сприймайте експоненту як вікно (Window) або інтервал між двома сусідніми цілими
ступенями двійки. Мантису сприймайте як зміщення (Offset) в цьому вікні.

Вікно повідомляє нам, між якими двома послідовними ступенями двійки буде число:
*0,1+, *1,2+, *2,4+, *4,8+ і так далі (аж до *2127,2128+. Зміщення розділяє вікно на
223 = 8388608 сегментів. За допомогою вікна і зміщення можна апроксимувати число.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 47
Числа, системи числення, математична логіка

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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 48
Числа, системи числення, математична логіка

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

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 49
Числа, системи числення, математична логіка

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

Денормалізовані числа. Це числа, мантиси яких лежать в діапазоні 0.1 <= M <1. Вони
знаходяться ближче до нуля, ніж нормалізовані. Зроблено так тому, що в технічній
практиці частіше зустрічаються величини близькі до нуля.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 50
Числа, системи числення, математична логіка

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


Не число (not a number, NaN) – код, який не є чинним
представленням жодного з чисел з плаваючою комою.
Можна отримати:
• у всіх математичних операціях, що містять NaN як один з
операндів;
• при діленні нуля на нуль;
• при діленні нескінченності на нескінченність;
• при множенні нуля на нескінченність;
• при додаванні нескінченності до нескінченності
протилежного знаку;
• при обчисленні квадратного кореня від'ємного числа.
NaN не дорівнює жодному іншому значенню, навіть самому собі

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 51
Числа, системи числення, математична логіка

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


Числа представлені в форматі IEEE754 охоплюють скінченну множину, на яку
відображається множина дійсних чисел. Тому вихідне число може бути
представлено в форматі IEEE754 з похибкою.
Максимальна відносна похибка для денормалізованного числа
(single / double):

Максимальна відносна похибка нормалізованого числа (single):

Максимальна відносна похибка нормалізованого числа (double):

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 52
Числа, системи числення, математична логіка

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


Правило додавання і віднімання:
1. Вибрати число з меншим порядком і зсунути його мантису вправо на
кількість розрядів, рівну різниці порядків.
2. Встановити порядок результату рівним більшому порядку операндів.
3. Виконати додавання / віднімання мантис і визначити знак результату.
4. Нормалізувати результат в разі потреби.

Правило множення:
1. Скласти порядки операндів і відняти від результату значення 127.
2. Перемножити мантиси і визначити знак результату.
3. У разі необхідності нормалізувати результат.

Правило ділення:
1. Відняти порядок дільника з порядку діленого і додати до результату
значення 127.
2. Розділити мантиси і визначити знак результату.
3. У разі необхідності нормалізувати результат.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 53
Числа, системи числення, математична логіка

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


Помилки пов'язані з точністю подання дійсних чисел у форматі IEEE754
Переповнення

123456789 = 00000111 01011011 11001101 00010101(ціле 8 байт)


Нормалізуємо – зсуваємо на 26 розрядів вправо:
= 1.11010110111100110100010101 * 226
експонента = 26+127=153
153 = 10011001
Вигляд у форматі з плаваючою комою:

123456789 = 0 10011001 11010110111100110100010101


Останні три розряди не влізають, відбувається переповнення
Стандарт IEEE-754 вимагає здійснити заокруглення, за замовчуванням до
найближчого парного числа
123456789 = 0 10011001 11010110111100110100011
= 123456792

123456788 = 0 10011001 11010110111100110100010100


= 123456784

123456789 – 123456788 = 1 Але у форматі з плаваючою комою: = 8


Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 54
Числа, системи числення, математична логіка

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


Помилки пов'язані з точністю подання дійсних чисел у форматі IEEE754
Неасоціативність
(a*b)*c ≠ a*(b*c)
(1020+1)-1020=0 ≠ (1020-1020)+1=1

Неможливість представлення деяких констант


Пам'ятайте, що не всі десяткові числа мають двійкове представлення з плаваючою
комою.
Наприклад, число «0,2» буде представлено як «0,200000003» в одинарній точності.
Відповідно, «0,2 + 0,2 ≈ 0,4».
Абсолютна похибка в окремому випадку може і не висока, але якщо використовувати
таку константу в циклі, можемо отримати накопичену похибку.

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 55
Числа, системи числення, математична логіка

Квантовий комп’ютер
Квантовий комп'ютер — фізичний
обчислювальний пристрій, функціонування
якого ґрунтується на принципах квантової
механіки, зокрема, принципі суперпозиції
та явищі квантової заплутаності. Такий
пристрій відрізняється від звичайного
транзисторного комп'ютера зокрема тим,
що класичний комп'ютер оперує даними,
закодованими у двійкових розрядах
(бітах), кожен з яких завжди перебуває в
одному з двох станів (0 або 1), коли
квантовий комп'ютер використовує
квантові біти (кубіти), які можуть
знаходитися у суперпозиції станів.

D-Wave One, 128-кубітний процесор, (2011)


Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 56
Числа, системи числення, математична логіка

Алгоритмізація та програмування, частина 1. Лектор – асист. каф. САПР, к.т.н.Яворський Н.Б., Львів, 2020 57

You might also like