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

5.3. Правило визначення точності зображення

Припустимо, що задано десяткове число, яке у вигляді десяткового дробу зображується з точністю до знаків. Для того, щоб відповідне двійкове число було тієї самої точності, у ньому необхідно записатиМ знаків так, щоб .

Запишемо алгоритм перетворення. Вхідні дані алгоритму: через позначатимемо вихідний правильний десятковий дріб, записаний у десятковій формі. Нехай цей дріб міститьзнаків.

Алгоритм:

Крок 1. Визначимо кількість необхідних двійкових знаків М з нерівності

Крок 2. Здійснюємо переведення цілої частини числа.

Крок 3. Цикл обчислення цифр двійкового зображення дробової частини числа. Номер цифри після десяткової крапки будемо позначати символом К.

Крок 3.1.К  1.

Крок 3.2. Якщо

то в запис двійкового числа на -те місце записуємо нуль

інакше

у запис двійкового числа на -те місце записуємо 1

А=А–2-К

Крок 3.3. К=К+1.

Крок 3.4. Якщо

то робота алгоритму завершена

інакше переходимо до пункту 2.

Вихідні дані: запис числа у двійковому зображенні.

Нехай необхідно перевести число 5.401 у двійкову систему числення. Ціла частина зображується двійковим числом 101. Дробову частину розкладемо за степенями двійки. Нам необхідно одержати стільки знаків двійкового зображення, щоб103 було менше , тобто. Тоді у двійковому розкладанні має бути не менше десяти знаків, оскільки29  512 і тільки 210  1024.

Наведемо послідовність виконання алгоритму.

Крок 1. 2–2  0.25; 0.401 – 0.25  0.151.

Крок 2. Тепер необхідно степенем двійки зобразити 0.151:

2–3  0.125; 0.151 – 0.125  0.026.

Крок 3. Найближчий до цього числа 0.026 степінь двійки

26  0.015625; 0.026 – 0.015625  0.010375.

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

Крок 4. Працюємо з числом 0.010375. Найближчий до цього числа степінь двійки 2–7  0.0078125;

0.010375 – 0.0078125  0.0025625.

Крок 5. Працюємо з числом 0.0025625. Найближчий до цього числа степінь двійки 2–9  0.001953125;

0.0025625 – 0.001953125  0.000609375.

Останній залишок менше 2–10, і якби ми бажали продовжувати наближення до вихідного числа, то нам би знадобилося 2–11, але це вже перевершує необхідну точність, отже, розрахунки можна припинити й записати остаточне двійкове зображення дробової частини:

0.401  0.011001101.

Остаточно маємо 5.401(10)  101.011001101(2).

Розглянемо правила перетворення систем числення з кратними основами на прикладі двійкової, вісімкової та шістнадцяткової систем. Основами вісімкової та шістнадцяткової систем є цілі степені числа 2:

8  23, 16  24.

На цьому факті ґрунтується нижченаведений підхід.

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

Переведемо числа 513.7(8) та 3Е7.В(16) у двійкову систему числення:

(5 1 3. 7)8  (101001011.111)2

101 001 011 111

(3 E 7. B)16  (1111100111.1011)2

0011 1110 0111 1011

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

010 011 101. 110  (235.6)8,

2 3 5 6

а потім у шістнадцяткове:

1001 1101. 1100  (9D.С)16.

9 D C

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

Перевести число в десяткову систему числення:

1. 1000001(2).

1000001(2) 1 × 26 + 0 × 25 + 0 × 24 + 0 × 23 + 0 × 22 + 0 × 21 + 1 × 20  64 + 1  65(10).

2. 1000011111.0101(2).

1000011111.0101(2)  1 × 29  1 × 24 + 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20 +

+ 1 × 22  1 × 2–4 = 512 + 16 + 8 + 4 + 2 + 1 + 0.25 + 0.0625  543.3125(10).

3. 1216.04(8).

1216.04(8)  1 × 83 + 2 × 82 + 1 × 81  6 × 80  4 × 82

 512 + 128 + 8 + 6 + 0.0625  654.0625(10).

4. 29A.5(16).

29A.5(16)  2 × 162  9 × 161  10 × 160  5 × 161  512  144  10  0.3125  656.3125(10).