- •Глава 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.
- •Принципи зображення дійсних чисел
- •Контрольні запитання
-
2.7. Внутрішнє зображення числових даних
Як уже зазначалося, вісім послідовних бітів утворюють байт, який може мати 256 різних станів (комбінацій з 0 і 1). Їм можна поставити у взаємно однозначну відповідність цілі числа від 0 до 255, цілі числа від –128 до 127, пари шістнадцяткових цифр або елементи якоїсь іншої 256-елементної множини.
-
Зображення цілих чисел
Цілі числа зображаються в комп’ютері переважно у двох формах — беззнаковій та знаковій. Ці форми називаються кодами. Далі числа будемо ототожнювати з їх зображенням, хоча з погляду математики це є хибним.
Беззнаковi коди займають декілька байтів (найчастіше, 1, 2, 4 або 8). Байти нумеруються, починаючи з 0. Біти всередині байтiв нумеруються від 0 до 7. N байтів містять 8N бітів, тому використовують також наскрізну нумерацію бітів — від 0 до 8N–1 (від молодших до старших). Усі можливі послідовності бітів зображають числа від 0 до . Відповідність між кодами та числами за різних значень N подано у такій таблиці.
Коди |
Числа |
N = 1 |
N = 2 |
N = 4 |
11…11 11…10 11…01 … 10…00 01…11 … 00…10 00…01 00…00 |
–2 –3 …
–1 … 2 1 0 |
255 254 253 … 128 127 … 2 1 0 |
65535 65534 65533 … 32768 32767 … 2 1 0 |
4394967295 4394967294 4394967293 … 2147483548 2147483647 … 2 1 0 |
Знакові коди також займають 1, 2, 4 або 8 байт. Старший біт зображає знак числа: 0 — «+», 1 — «–». Додатні числа зображаються так само, як i беззнакові, лише за рахунок знакового біта їх діапазон — від 0 до . Таке зображення називається прямим кодом. Наприклад, число має прямий код 0111.
Від’ємні числа зображено так званим додатковим кодом. Код від’ємного числа A позначається D(A) й утворюється так.
1. За прямим кодом числа |a| шляхом заміни всіх 0 на 1 і всіх 1 на 0 будуємо обернений код r(a).
2. За R(A) як беззнаковим цілим числом обчислюємо код D(A) = R(A)+1.
Приклад 2.6.1. Побудуємо двобайтовий додатковий код числа –144.
Прямий код |A| |
0000 0000 1001 0000 |
Обернений код R(A) |
1111 1111 0110 1111 |
Додавання 1 |
1 |
Додатковий код D(A) |
1111 1111 0111 0000 |
«Відновити» за додатковим кодом від’ємне число можна у зворотному порядку.
1. D(A) розглядаємо як беззнакове ціле, обчислюємо R(A) = D(A)–1.
2. Код, обернений до r(a), є прямим кодом числа |a|.
Проте можна обійтися без віднімання. Очевидно, що D(A) = R(|A|–1), тобто, наприклад, додатковий код числа –144 водночас є оберненим кодом числа –143. Тоді код R(D(A)) є прямим кодом числа |A|–1. Тоді прямий код |A| можна отримати так.