- •Глава 2.1 Зображення чисел
- •2.2. Позиційні системи числення
- •2.3. Перетворення чисел з недесяткової системи в десяткову
- •2.4. Перетворення з десяткової системи в недесяткову
- •Цілі числа
- •1. Спочатку частка t дорівнює n, а запис порожній.
- •Дробові числа
- •1. Спочатку зображенням є «0.».
- •2. Поки одержано менше за r дробових цифр,
- •2.5. Зв’язок двійкових, вісімкових та шістнадцяткових записів
- •2.6. Додавання та множення у позиційних системах числення
- •Додавання
- •Множення
- •2.7. Внутрішнє зображення числових даних
- •Зображення цілих чисел
- •1. За прямим кодом числа |a| шляхом заміни всіх 0 на 1 і всіх 1 на 0 будуємо обернений код r(a).
- •2. Код, обернений до r(a), є прямим кодом числа |a|.
- •1. Будуємо код r(d(a)), обернений до d(a).
- •2. До r(d(a)) як беззнакового цілого додаємо 1.
- •Принципи зображення дійсних чисел
- •Контрольні запитання
1. Спочатку зображенням є «0.».
2. Поки одержано менше за r дробових цифр,
обчислити VP, обчислити d як [VP]
(ціле число від 0 до P–1) та V як {VP}.
Зобразити значення d як P-кову цифру та
дописати її до зображення праворуч.
Цілі та дробові числа перекладаються в недесяткову систему за різними алгоритмами. Тому, якщо треба перекласти число, що має цілу та дробову частини, треба спочатку виділити ці частини й потім перекласти їх окремо.
Взагалі, щоб перетворити запис числа з довільної системи числення в іншу довільну, потрібно виконувати арифметичні дії в незвичній недесятковій системі числення. Проте це зробити просто, використовуючи десяткову систему числення як проміжну.
-
2.5. Зв’язок двійкових, вісімкових та шістнадцяткових записів
Двійкова система не дуже зручна для людини, оскільки числа записуються в ній досить довгими послідовностями нулів і одиниць. Наприклад, десяткове число 1024 в двійковій системі числення виглядає як 10000000000. Для скорочення запису в програмуванні традиційно використовують вісімкову та шістнадцяткову системи числення.
Вісімковим цифрам від 0 до 7 взаємно однозначно відповідають усі можливі трирозрядні двійкові коди (з незначущими нулями).
0 |
000 |
1 |
001 |
2 |
010 |
3 |
011 |
4 |
100 |
5 |
101 |
6 |
110 |
7 |
111 |
Аналогічно, шістнадцятковим цифрам від 0 до F відповідають усі можливі чотирирозрядні двійкові коди (також із незначущими нулями).
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
A |
1010 |
B |
1011 |
C |
1100 |
D |
1101 |
E |
1110 |
F |
1111 |
Наведений зв’язок між цифрами та групами двійкових цифр забезпечує дуже простий спосіб отримання вісімкового та шістнадцяткового запису за двійковим і навпаки. Для перекладу з вісімкової в шістнадцяткову систему й навпаки можна використати двійковий запис як проміжний.
У двійковому запису, починаючи з молодшої цифри, замінимо трійки цифр відповідними вісімковими цифрами (остання трійка може бути неповною — до неї спочатку допишемо незначущі нулі). Навпаки, вісімковий запис перетворимо на двійковий, замінюючи цифри відповідними їм трійками двійкових. Трійка, що відповідає старшій цифрі, може мати незначущі нулі — вони не записуються.
Приклад. Двійковий запис 1111010 розіб’ємо на групи 1, 111, 010. Групу 1 доповнимо до трійки 001. Трійці 001 відповідає вісімкова цифра 1, трійці 111 — 7, і, нарешті, 010 — 2. Результатом є вісімковий запис 172. Навпаки, у вісімковому 172 цифрі 1 відповідає група двійкових розрядів 001, 7 — група 111, 2 — група 010. Результат перетворення — двійкове 1111010 (без незначущих старших 00).
Перетворення двійкового запису на шістнадцятковий аналогічне, лише двійковий запис розбивають на групи з чотирьох розрядів, які замінюють відповідними шістнадцятковими цифрами. Навпаки, шістнадцятковий запис перетворюють на двійковий заміною цифр відповідними четвірками двійкових цифр.
Приклад. Двійкове число 1111010 розбивається на групи 111 і 1010. Старша група 111 доповнюється до 0111; їй відповідає шістнадцяткова цифра 7, групі 1010 — цифра A. Результат — шістнадцятковий запис 7A.
У шістнадцятковому записі 7A цифрі 7 відповідає тетрада 0111, цифрі A — 1010. Результат перетворення — двійковий запис 1111010.
Аналогічний зв’язок між цими трьома системами існує й у запису дробових чисел. Групи по три двійкові цифри, починаючи від старших (перших після коми), відповідають вісімковим цифрам, а групи по чотири — шістнадцятковим. Остання група може бути неповною — до неї дописують незначущі нулі, але праворуч.
Приклад. Двійковий запис 0,0101111101 розіб’ємо на групи по три цифри: 010, 111, 110 та 1. Останню групу доповнимо до 100 та отримаємо вісімковий запис 0,2764. Цей самий двійковий запис розіб’ємо на групи 0101, 1111, 01, останню групу доповнимо до 0100 та утворимо шістнадцятковий запис 0,5F4.