Основы объектно-ориентированного программирования на языке C# book | Page 86
6 Зображення чисел у комп’ютерi
6.3 Правило визначення точностi
зображення
Припустимо, що задано десяткове число, яке у виглядi десяткового
дробу зображується з точнiстю до N знакiв. Для того, щоб вiдповiдне
двiйкове число було тiєı̈ самоı̈ точностi, у ньому необхiдно записати
M знакiв так, щоб 2 M > 10 N .
Запишемо алгоритм перетворення. Вхiднi данi алгоритму: через A
позначатимемо вихiдний правильний десятковий дрiб, записаний у
десятковiй формi. Нехай цей дрiб мiстить N знакiв.
Алгоритм:
1. Визначимо кiлькiсть необхiдних двiйкових знакiв M з нерiвностi
2 M > 10 N .
2. Здiйснюємо переведення цiлоı̈ частини числа.
3. Цикл обчислення цифр двiйкового зображення дробовоı̈ частини
числа. Номер цифри пiсля десятковоı̈ крапки будемо позначати
символом K.
3.1. K = 1.
3.2. Якщо 2 −K > A, то в запис двiйкового числа на K-те мiсце
записуємо нуль iнакше у запис двiйкового числа на K-те
мiсце записуємо 1 i A = A − 2 −K
3.3. K = K + 1.
3.4. Якщо K > M , то робота алгоритму завершена, iнакше пе-
реходимо до пункту 2.
Вихiднi данi: запис числа у двiйковому зображеннi.
Нехай необхiдно перевести число 5.401 у двiйкову систему числен-
ня. Цiла частина зображується двiйковим числом 101. Дробову части-
ну розкладемо за степенями двiйки. Нам необхiдно одержати стiль-
ки знакiв M двiйкового зображення, щоб 10 3 було менше 2 M , тобто
1000 < 2 M . Тодi у двiйковому розкладаннi має бути не менше десяти
знакiв, оскiльки 2 9 = 512 i тiльки 2 10 = 1024.
Наведемо послiдовнiсть виконання алгоритму.
Крок 1. 2 −2 = 0.25; 0.401 − 0.25 = 0.151.
Крок 2. Тепер необхiдно степенем двiйки зобразити 0.151:
2 −3 = 0.125; 0.151 − 0.125 = 0.026.
Крок 3. Найближчий до цього числа 0.026 степiнь двiйки
86