Tema_1_1_Lektsiya_1
.docРозділ 1. Основи двійкової арифметики
Тема 1.1. Подання чисел з фіксованою комою в розрядній сітці
Представлення чисел з фіксованою комою
Зображення числа має постійну розрядність, а положення коми фіксується в визначеному місці відносно розрядів числа [або перед старшим розрядом(рис.1.) або після молодшого(рис.2.)]
Вірний дріб -1<[AФ]<1, то А=[AФ]КА
Діапазон чисел від ±(1-2-31) до ±2-31
“0”(“+”)→ |
Знак, |
2-1 |
2-2 |
2-3 |
2-4 |
… … … … … |
2-31 |
“1”(“-”)→ |
|||||||
|
0 |
1 |
2 |
3 |
4 |
… … … … … |
31 |
Рис.1. Числа, які менші одиниці |
0.111…1=1-2-31 – найбільше позитивне число
0.000…1=2-31 – найменше позитивне число
Діапазон чисел 1≤|x|≤231-1
“0”(“+”)→ |
Знак |
230 |
229 |
228 |
227 |
… … … … … |
20 , |
“1”(“-”)→ |
|||||||
|
0 |
1 |
2 |
3 |
4 |
… … … … … |
31 |
Рис.2. Тільки цілі числа |
При виконанні на ЕОМ обчислювань необхідно щоб усі вихідні та отримані дані не виходили за діапазон чисел, які представлені в розрядній сітці. Для цього при програмуванні задачі дані записуються з відповідними масштабними коефіцієнтами.
Використання чисел з фіксованою комою дозволяє спростити схеми ЕОМ, підвищити її швидкодію, але створює труднощі при програмуванні.
Розглянемо задачу вибору коефіцієнту КА. Нехай маємо цифровий автомат з розрядною сіткою 12 двійкових розрядів.
0, |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
Потрібно визначити КА для числа А1=-1011,0111110 та А2=0,110001101
Щоб виконувалась умова -1<[AФ]<1, потрібно А1 записати так -0,10110111110*24; тобто [A1]=1,10110111110 , КА=24.
КА1= КА2, щоб число А2 було розміщено у 12-розрядній сітці, тобто А2=+0,0000110001101 або [A2]=0,00001100011
А1 |
→ |
1, |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
А2 |
→ |
0, |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
З приклада бачимо, що число А2 записано з погрішністю. Помилка числа з фіксованою комою залежить від вірного вибору масштабних коефіцієнтів.
Кодування знаків і від’ємних чисел
В ККС доцільно представляти знаки за допомогою тих самих символів, які вже використовуються для представлення самого числа в системі числення з основою k. Для цього виділяють додатковий розряд, який має назву знаковий, його зазвичай розміщують зліва віл старшого розряду числа.
Будемо позначати знакові розряди чисел X, Y, Z, … як x0, y0, z0, … та відділяти їх крапкою від цілого числа та комою від дробового числа.
Приклад 1. У 2й та 2-10й системах числення знак “-” позначається як “1”, тобто х0=1, а знак “+” як “0”, тобто х0=0.
Х→1.101102; |
Y→0.10012; |
Z→0,101,0112 |
Алгоритми виконання операцій додавання і віднімання в позиційній системі однорідній системі числення з основою k відповідає відповідним алгоритмам в звичайній десятковій системі числення.
Результати операцій додавання / віднімання цифр х та у в одному розряді представляються двома цифрами:
цифрою q результат операції у даному розряді;
цифрою р перенесення в старшому розряді.
Правила формування цифр q та р для будь-якого k можна записати наступним чином.
а) для додавання |
б) для віднімання |
||
q = { |
x + y, якщо х + у < k |
q = { |
x - y, якщо х ≥ у |
х + у – k, якщо х + у ≥ k |
k + х – у, якщо х < у |
||
р = { |
0, якщо х + у < k |
р = { |
0, якщо х ≥ у |
1, якщо х + у ≥ k |
- 1, якщо х < у |
Функції q (x, y) та р (х, у) для операцій додавання/віднімання для k =2 можна представити за допомогою наступної таблиці:
а) додавання |
б) віднімання |
||||||||||||||||||||||
q (x, y) |
р (х, у) |
q (x, y) |
р (х, у) |
||||||||||||||||||||
|
|
Y |
|
|
|
|
Y |
|
|
|
|
Y |
|
|
|
|
Y |
|
|
||||
|
Х |
0 |
1 |
|
|
|
Х |
0 |
0 |
|
|
|
Х |
0 |
1 |
|
|
|
Х |
0 |
1 |
|
|
|
1 |
0 |
|
|
|
0 |
1 |
|
|
|
1 |
0 |
|
|
|
0 |
0 |
|
|
Для вірного виконання арифметичних та інших операцій над числами використовують спеціальні способи зображення чисел: прямий, обернений та додатковий коди. Розглянемо як двійкові числа зображуються цими кодами.
Прямий код.
Вираз для створення прямого коду двійкового числа X = 0, α1, α2, α3 ... αn має вигляд:
х, якщо х ≥ 0
Хпр =
1 – х, якщо х ≤ 0
Приклад 2. Х1 = + 0,1101, Хпр = 0,1101
Х2 = -0,10101, Хпр = 1- (0,10101) = 1,10101
Прямий код використовують для зберігання чисел в ЗП, в пристроях вводу/виводу, а також при виконанні операцій множення.
Обернений код. Вираз для створення цього коду такий
х, якщо х ≥ 0
Хоб =
10 + х – 10 n, якщо х ≤ 0
Приклад 3. Х = - 0,100110
Хоб. = 10 – 0,100110 – 0,000001 = 1,011001
Порівнюючи число X з його Хоб, можна вивести таке правило: щоб записати від'ємне число в оберненому коді, потрібно у знаковому розряді цього числа поставити „1", а у числових розрядах „0", замінити на „1", а „1" на „0".
Приклад 4. Х = 0,110110, Хоб = 0,110110
Отже, для додатних чисел X = Хоб
Додатковий код. Вираз для створення додаткового коду двійкового числа X:
х, якщо х ≥ 0
Хдод =
10 + х, якщо х < 0
Приклад 5. X = -0,101010, Хдод = 10 + (- 0,101010) = 1,010110
Порівнюючи число X з його Хдод. Можна вивести правило: щоб записати від'ємне число у додатковому коді потрібно його записати спочатку у оберненому коді, а потім до молодшого розряду отриманого результату дописати „1".
Для додатних чисел X = Хдод
Зворотній та додатковий коди використовуються для заміни операцій віднімання операцією додавання. Що спрощує пристрій арифметичного блоку ЕОМ.
Додавання та віднімання чисел з фіксованою комою
Алгоритм додавання / віднімання чисел з фіксованою комою у прямих та додаткових кодах розглянемо на прикладах.
Приклад 6. х = ±15, у = ±7
а) х + у
Хпрм= |
Хдкм= |
+ |
00,01111 |
=+15 |
Упрм= |
Удкм= |
00,00111 |
=+7 |
|
|
Z |
= |
00.10110 |
=+22 |
b) х - у
В ідкидається |
. |
. . . . . . |
|
Хдкм= |
+ |
00,01111 |
=+15 |
Удкм= |
11,11001 |
=-7 |
|
Zдкм= |
|
00,01000 |
=+8 |
с) - х + у ;
Хдкм= |
+ |
11,10001 |
=-15 |
|
Удкм= |
00,00111 |
=+7 |
|
|
Zдкм= |
|
11.11000 |
→ |
Zпкм=11.01000=-8 |
d) -x - y
Хдкм= |
+ |
11,10001 |
=+15 |
|
Удкм= |
11,11001 |
=+7 |
|
|
Zдкм= |
|
11.01010 |
→ |
Zпкм=11.10110=-22 |
Домашнє завдання
Представити в форматі з фіксованою комою наступні числа:
А) Х=@+12
Б) У= @+25
де @ - порядковий номер по журналу, або останні дві цифри студентського квитка.
Виконати арифметичні операції додавання/віднімання у прямому, оберненому та додатковому кодах:
А) Х+У
Б) Х-У
В) –Х+У
Г) –Х-У