Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Бичков - Основи сучасного програмування.doc
Скачиваний:
69
Добавлен:
07.03.2016
Размер:
2.67 Mб
Скачать

5.4. Двійкова арифметика

До арифметичних належать операції додавання, віднімання, множення й ділення. Як вони виконуються з двійковими числами?

Наведемо двійкові операції і розглянемо детально їхнє виконання (табл. 5.2).

Таблиця 5.2

Двійкове додавання

Двійкове віднімання

Двійкове множення

0 + 0 = 0

0 + 1  1

1 + 0 = 1

1 + 1  0 та одиниця перенесення в старший розряд

0 – 0 = 0

1 – 0 = 1

1 – 1 = 0

10 – 1 = 1

0 * 0 = 0

0 * 1 = 0

1 * 0 = 0

1 * 1 = 0

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

Операція додавання виконується порозрядно зліва направо, як і при додаванні десяткових чисел. При розрядному переповненні додаємо один старший розряд.

Розглянемо приклади.

1. Обчислити 10011  10001.

Маємо

1

0

0

1

1

1

0

0

0

1

1

0

0

1

0

0

Розглянемо виконання операції додавання порозрядно. Нумеруємо розряди зліва направо.

Перший розряд: 1  1  2. Одержали число, більше ніж 1, тому записуємо 0, а 1 переносимо у старший розряд.

Другий розряд: 1  0  1 (перенесення)  2. Записуємо 0, а 1 переносимо у старший розряд.

Третій розряд: 0  0  1 (перенесення)  1. Записуємо 1.

Четвертий розряд: 0  0  0. Записуємо 0.

П'ятий розряд: 1  1  2. Записуємо 0 у п'ятий розряд і 1 – у шостий.

Таким чином, одержали число 100100. Разом

10011  10001  100100.

2. Обчислити 1010.01  1011.10

1010.01 (10.25)

1011.10 (11.05)

10101.11 (21.75)

Маємо

1

0

1

0

.

0

1

1

0

1

1

.

1

0

1

0

1

0

1

.

1

1

5.4.2. Зображення від'ємних чисел

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

Загальна ідея побудови кодів така. Код трактується як число без знака, а діапазон чисел, що зображуються кодами без знака, розбивається на два піддіапазони. Перший з них зображує додатні числа, а другий – від'ємні. Коди формуються так, щоб значення старшого розряду вказувало на знак числа, що зображується.

Прямий код. Прямий код двійкового числа А, що зображується в n-розрядній сітці, визначається як А, якщо якщодеа – величина, що дорівнює вазі старшого розряду сітки: для дробів а для цілихДіапазон чисел, що зображуються прямим кодом, становить

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

0101 (5)

1101 (–5)

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

Операція віднімання зводиться до операції арифметичного додавання за допомогою оберненого й додаткового кодів.

Обернений код. Обернений код двійкового числа А, що зображується в n-розрядній сітці, визначається як I A, якщо I , якщо деb – величина найбільшого числа без знака, що розміщується в n-розрядній сітці: для дробових чисел а для цілих. Діапазон чисел, що зображуються зворотним кодом, такий самий, як і для чисел прямого коду:. За означенням, зворотний код від'ємного числа є доповненням модуля вихідного числа до найбільшого числа без знака, що міститься в розрядній сітці. У зв'язку з цим одержання зворотного коду двійкового від'ємного числа зводиться до одержання інверсії n-розрядного коду абсолютної величини цього числа. Оскільки модуль чисел, що зображуються в n-розрядній сітці, , то в старшому (знаковому) розряді зворотного коду в додатних чисел буде 0, а у від'ємних – 1. У цифрових розрядах зворотного двійкового коду зображується або модуль числа (для додатних чисел), або його інверсія (для від'ємних).

Розглянемо операцію алгебраїчного додавання:

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

При виконанні розрахунків на машині може виникнути як додатний, так і від'ємний нуль. Додатний нуль має вигляд:

(0)  00000...00 – для прямого зображення;

(0)  00000...00 – для зворотного зображення.

Від'ємний нуль має вигляд:

(–0)  100000...00 – для прямого зображення;

(–0)  111111...11 – для зворотного зображення.

Щоб уникнути виникнення двох нулів, застосовують додатковий код.

Додатковий код. Перейдемо тепер до питання зображення від'ємних чисел. Для визначеності розглянемо зображення чисел, у якому будь-яке число займає рівно вісім бітів. Із запису у двійковій системі числення рівності (–1)  1  0 легко знайти, який вигляд повинне мати невідоме нам поки що двійкове зображення xxxxxxxx числа –1: