Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Posibnyk_C_sum.doc
Скачиваний:
9
Добавлен:
29.08.2019
Размер:
1.63 Mб
Скачать

1.3 Системи числення

Система числення – це сукупність правил запису чисел та виконання над ними певних дій.

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

Для представлення чисел використовують спеціальні знаки, наприклад, цифри. За вагою кожного знака розрізняють два види систем числення: позиційні та непозиційні. У позиційних системах числення кожний розряд числа має власну вагу, наприклад, у числі 2008 наймолодший розряд (цифра 8) визначає кількість одиниць, друга – десятків і т. д. Прикладом непозиційної систем числення є римська, в якій те ж число 2008 буде виглядати як MMVIII. Тут три наймолодші розряди (знаки I) мають однакову вагу, кожний з них дорівнює одиниці. А кожна з двох перших цифр (ММ) означає одну тисячу, хоча знаходяться вони в різних місцях (розрядах) числа.

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

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

Найменший об’єм пам’яті, де записано 0 або 1, називається один біт, 8 біт складають 1 байт.

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

За допомогою тригерів можна також забезпечити трійкову систему числення, яка вважається оптимальною. Її три цифри 0, 1, 2 фізично можна представити як -1, 0 і 1.

У програмуванні мовою С, крім десяткових, часто приходиться обробляти цілі числа двійкової системи числення. Для перекладу цілого десяткового числа в двійкове необхідно його та всі результати першого ділення поділити на 2. Першою цифрою двійкового числа буде результат останнього ділення, решта – всі залишки від ділення від першого до останнього Продемонструємо хід роботи на перекладі числа 18.

18:2=9, залишок: 0;

9:2=4, залишок: 1;

4:2=2, залишок: 0;

2:2=1, залишок: 0;

останній результат ділення на 2: 1.

Одержане двійкове число дорівнюватиме 10010, для перевірки результату перекладемо його назад у десяткову систему числення. Для цього помножимо кожний розряд на 2і , де 2 – основа двійкового числа, (нумерація розрядів починається з крайнього правого), n – кількість розрядів (тут n=5), і додамо всі результати множення. Отже,

1×24+0×23+0×22+1×21+0×20=16+0+0+2+0=18.

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

0,2 × 2 = 0,4, ціла частина множення дорівнює 0;

0,4 × 2 = 0,8, ціла частина множення дорівнює 0;

0,8 × 2 = 1,6, ціла частина множення дорівнює 1;

0,6 × 2 = 1,2, ціла частина множення дорівнює 1;

0,2 × 2 = 0,4, ціла частина множення дорівнює 0 і т. д.

Тоді одержимо: 0,2 десяткове = 0,(0011) двійкове – періодичний дріб. Оскільки довжина комірки машинної пам’яті фіксована, то число 0,2 буде представлено неточно, його “хвіст” буде відкинений. Покажемо це на прикладі, перекладемо число 0,2 назад у десяткову систему числення, взявши лише його перші 4 розряди, тоді:

0×2-1+0×2-2+1×2-3+1×2-4=0+0+1/8+1/16=3/16=0,1875.

Дії над двійковими та іншими числами відбуваються подібно до десяткових, лише враховується те, що під час виконання операції додавання переповнення молодшого розряду настає при досягненні основи. Якщо в десятковій системі числення переповнення молодшого та додавання одиниці до старшого розряду відбувається при десятій одиниці, то в двійковій – при другій. Наприклад, додамо два десяткові числа 15+3=18 у двійковому представленні:

1111

+11

=10010

Відповідно при відніманні “позичений” сташий розряд “розмінюється” на декількість одиниць основи. Покажемо приклад віднімання двох чисел: 18-15=3. Тоді в двійковій системі числення матимемо такий результат:

10010

-1111

=11

Поряд із десятковою та двійковою в програмах мовою С застосовують вісімкову та шістнадцяткову системи числення, основою яких є числа відповідно 8 і 16. Вони утворюються з десяткових цифр, а якщо цифр замало, то й букв А, B, C, D, E, F. Наприклад, у 16-й системі числення число С=12 десяткових одиниць. Ці системи вигідні тим, що спрощують переклад своїх чисел у двійкові та навпаки за рахунок кратності. Нехай, наприклад, десяткове число дорівнює 23. Перекладемо його в вісімкову систему числення. 23:8=2, залишок дорівнює 7, отже, вісімкове число дорівнює 27. Представимо його двійковими тріадами, для цього кожну цифру перекладемо у двійкову систему числення. Тоді одержимо дві тріади: 010 111, а, відкинувши зайвий нуль у старшому розряді, матимемо двійкове число 10 111. Перевірка:

1*24+0*23+1*22+1*21+1*20=16+0+4+2+1=23.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]