Системи числення: задачі з покроковими розв’язками
Інші назви: двійкова система · шістнадцяткова система · переведення чисел
Безкоштовні задачі з теми Системи числення з рисунками, підказками й повними розв’язками. Щоразу нові значення, трьох рівнів: з двійкової і шістнадцяткової в десяткову, додатковий код, біти, діапазони і пам'ять.
Безкоштовна задачаЛегка
Встановіть біти так, щоб 8-бітовий регістр містив 0x99. Яке значення N шаблону в десятковій системі?
0x99
Клацніть біт, щоб перемкнути його між 0 і 1. Поле показує ваш шаблон як беззнакове число, і його також можна ввести. Точна відповідь: ціле число, без округлення.
У повсякденному житті ви рахуєте в десятковій системі, з основою 10. Вона має десять цифр, від 0 до 9, і кожен розряд коштує вдесятеро більше за розряд праворуч.
У числі 352 цифра 3 означає 300, цифра 5 — 50, а цифра 2 — 2. Розряди коштують 1, 10, 100, якщо йти справа.
352 = 3 · 100 + 5 · 10 + 2 · 1
Комп’ютер зберігає все як перемикачі, що ввімкнені або вимкнені. Тому він рахує в двійковій системі, з основою 2, лише з цифрами 0 і 1.
Одна двійкова цифра — це біт. Група з 8 бітів — це байт.
Правило однакове в усіх системах числення: кожна цифра дорівнює своєму значенню, помноженому на степінь основи.
Самоперевірка У десятковому числі 4721 чому дорівнює 7?
7000
700
70
7
Відповідь: 700. Якщо рахувати справа, розряди коштують 1, 10, 100 і 1000. Цифра 7 стоїть у третьому розряді, тож вона дорівнює 7 · 100 = 700.
2Двійкова й шістнадцяткова системи
У двійковій системі розряди коштують 1, 2, 4, 8, 16 і так далі, справа наліво. Кожен розряд коштує вдвічі більше за розряд праворуч.
Для 8-бітного числа розряди коштують 128, 64, 32, 16, 8, 4, 2 і 1.
Щоб прочитати двійкове число, додайте вагові значення розрядів усіх бітів, що дорівнюють 1. Для 0011 0010 це 32 + 16 + 2 = 50.
Довгі ряди бітів важко читати. Програмісти часто записують їх натомість у шістнадцятковій системі (hex), з основою 16.
Шістнадцяткова система потребує 16 цифр. Вона використовує 0–9, а далі літери A = 10, B = 11, C = 12, D = 13, E = 14 і F = 15.
Розряди шістнадцяткового числа коштують 1, 16, 256 і 4096, справа наліво. Шістнадцяткове число часто пишуть із 0x попереду, наприклад 0x2F.
Одна шістнадцяткова цифра — це рівно 4 біти, тож 0011 0010 — це 0x32: 0011 — це 3, а 0010 — це 2.
Самоперевірка Чому дорівнює 0x1A у десятковій системі?
110
11
161
26
Відповідь: 26. A = 10. Розряди — 16 і 1, тож 1 · 16 + 10 · 1 = 26. Записати цифри поруч (110) або додати їх (11) означає ігнорувати вагові значення розрядів. 161 бере розряди в хибному порядку.
3Від’ємні числа: доповняльний код
Байт, у якому всі розряди додатні, зберігає від 0 до 255. Це називають беззнаковим числом.
Щоб зберігати від’ємні числа, комп’ютери використовують доповняльний код (two’s complement). Єдина зміна: крайній лівий біт дорівнює −128 замість +128.
Отже, 1000 0011 — це −128 + 2 + 1 = −125. Крайній лівий біт називають знаковим бітом: коли він дорівнює 1, число від’ємне.
8-бітне число в доповняльному коді — від −128 (1000 0000) до +127 (0111 1111).
Щоб записати від’ємне число −x, візьміть +x у двійковій системі, інвертуйте кожен біт (0 стає 1, 1 стає 0) і додайте 1.
Приклад для −5: 5 — це 0000 0101. Інвертоване — 1111 1010. Додавши 1, отримуємо 1111 1011.
Той самий шаблон, прочитаний як беззнаковий, має значення 256 − x. Для −5 це 251, і справді 1111 1011 — це 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251.
Самоперевірка 8-бітний шаблон 1111 1111 зберігає число в доповняльному коді. Яке його значення?
255
−127
−128
−1
Відповідь: −1. −128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = −1. 255 — беззнакове прочитання. −127 виходить, якщо вважати перший біт знаком мінус перед 111 1111.
4Метод крок за кроком
Двійкове чи шістнадцяткове число в десяткове:
Запишіть вагу розряду під кожною цифрою: степені 2 для двійкових, степені 16 для шістнадцяткових, починаючи з 1 справа.
У шістнадцятковій системі замініть кожну літеру її значенням: від A = 10 до F = 15.
Помножте кожну цифру на вагу її розряду й додайте все.
Доповняльний код:
Щоб прочитати шаблон, надайте крайньому лівому біту значення −128 (у 8 бітах) і додайте ваги всіх одиничних бітів.
Щоб записати −x, запишіть +x у 8 бітах, інвертуйте кожен біт і додайте 1.
Беззнакове значення цього шаблону дорівнює 256 − x. Користуйтеся ним, щоб перевірити біти.
Біти, діапазони й пам’ять:
n бітів дають 2ⁿ різних шаблонів.
Беззнакові вони зберігають від 0 до 2ⁿ − 1. У доповняльному коді — від −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1.
Щоб дати k елементам власні коди, знайдіть найменше b, для якого 2b ≥ k.
Для пам’яті помножте кількість елементів на кількість бітів на елемент, потім поділіть на 8 для байтів і на 1024 для KiB.
M = ширина × висота × бітів на піксель / 8 / 1024 (KiB)
5Розв’язаний приклад
Простежте кожен крок. Спробуйте передбачити наступний, перш ніж його відкрити.
Розв’язаний приклад
8-бітний шаблон 1011 0110 зберігає знакове ціле число в доповняльному коді. Яке його значення N у десятковій системі?
1
Запишіть ваги розрядів
У доповняльному коді крайній лівий розряд має вагу −128. Інші розряди — 64, 32, 16, 8, 4, 2 і 1.
2
Подивіться на знаковий біт
Крайній лівий біт дорівнює 1, тож число від’ємне.
3
Додайте одиничні біти
Одиничні біти стоять у розрядах −128, 32, 16, 4 і 2.
N = −128 + 32 + 16 + 4 + 2 = −74
4
Перевірте за беззнаковим значенням
Прочитаний як беззнаковий, шаблон дорівнює 128 + 32 + 16 + 4 + 2 = 182.
Для від’ємного числа беззнакове значення дорівнює 256 − x, тож x = 256 − 182 = 74. Знову виходить N = −74.
5
Перевірте інвертуванням
Інвертуйте 1011 0110, отримайте 0100 1001, потім додайте 1 і отримайте 0100 1010.
0100 1010 — це 64 + 8 + 2 = 74. Отже, початковий шаблон — це −74.
Відповідь
N = −74
6Типові помилки
Забути додати 1 після інвертування бітів. Результат виходить на одиницю менший.
Читати шаблон доповняльного коду як беззнаковий, наприклад 1111 1111 як 255 замість −1.
Вважати знаковий біт знаком мінус перед рештою бітів. У доповняльному коді він має вагу −128.
Розташовувати розряди в хибному порядку. Розряд із вагою 1 завжди справа.
Брати A = 11 у шістнадцятковій системі. Літери починаються з A = 10.
Плутати біти й байти в задачах на пам’ять. Поділіть кількість бітів на 8.
Самоперевірка Як виглядає −5 як 8-бітний шаблон доповняльного коду?
0000 0101
1000 0101
1111 1010
1111 1011
Відповідь: 1111 1011. 5 — це 0000 0101. Інвертування дає 1111 1010, а додавання 1 — 1111 1011. 1111 1010 забуває додати 1, а 1000 0101 ставить знак мінус перед 5.
7Як виглядають екзаменаційні запитання
Легкі: двійкові та шістнадцяткові числа в десяткові. Перетворіть 8-бітне двійкове або 3-цифрове шістнадцяткове число в десяткове.
Середні: доповняльний код. Прочитайте значення знакового 8-бітного шаблону або запишіть від’ємне число як шаблон і дайте його беззнакове значення.
Складні: біти, діапазони й пам’ять. Найбільше або найменше (найбільш від’ємне) значення, що вміщується в n бітів, кількість бітів для k кодів або пам’ять, яку займає зображення.
Приклад складного запитання: зображення 256 × 256 із 24 бітами на піксель займає 256 · 256 · 24 / 8 / 1024 = 192 KiB.
Самоперевірка Яка найменша кількість бітів дає 375 елементам власні коди?
188
512
8
9
Відповідь: 9. 2⁸ = 256 — замало кодів, 2⁹ = 512 вистачає, тож 9 бітів. 512 — це кількість кодів, а не бітів.
Переведіть шістнадцяткове число 0x2BE у десяткове. Знайдіть N.
0x2BEA = 10 … F = 15
Знайти: N
Показати підказки
Шістнадцяткові розряди справа варті 1, 16, 256, 4096.
Замініть літери їхніми значеннями (A = 10 … F = 15), помножте на вагу розряду і додайте.
2 = 2, B = 11, E = 14.
Показати відповідь і покроковий розв’язок
Позиційні системи числення: кожна цифра варта свого значення, помноженого на степінь основи. У двійковій системі розряди варті 1, 2, 4, 8, 16, …, у шістнадцятковій 1, 16, 256, …, де A–F означають 10–15. У 8-бітовому додатковому коді крайній лівий біт вартий −128 замість +128; так зберігаються від'ємні числа.
Помножте кожну цифру на вагу її розряду
2·256 + 11·16 + 14·1 = 702
Відповідь
0x2BE = 702
Приклад 2Середня
Встановіть біти так, щоб вони зберігали −45 в 8-бітовому доповняльному коді. Яке значення U шаблону, якщо читати його як беззнакове число?
N = −458 bit
Знайти: U
Показати підказки
Запишіть 45 у двійковій системі, інвертуйте кожен біт, потім додайте 1.
45 = 0010 1101₂.
Як беззнакове число шаблон дорівнює 256 + N.
Показати відповідь і покроковий розв’язок
Встановлення бітів: кожен біт має вагу степеня двійки (128, 64, …, 1). Одна шістнадцяткова цифра — це рівно чотири біти, а в 8-бітовому доповняльному коді крайній лівий біт має вагу −128. Порозрядні операції працюють з кожною позицією біта окремо.
Інвертуйте і додайте одиницю
45 = 0010 1101
інвертовано: 1101 0010
+1 → 1101 0011
Прочитайте як беззнакове
1101 0011₂ = 256 − 45 = 211
Відповідь
U = 211
Приклад 3Складна
Встановіть біти за 8-бітовим результатом 0111 0001 >> 3. Яке значення R результату в десятковій системі?
0111 0001>> 3
Знайти: R
Показати підказки
Зсув праворуч на 3 переміщує кожен біт на 3 позицій праворуч; біти, що випадають з правого краю, втрачаються, а зліва додаються нулі.
Опрацьовуйте по одній позиції біта, зліва направо.
Перші чотири біти результату — 0000.
Показати відповідь і покроковий розв’язок
Встановлення бітів: кожен біт має вагу степеня двійки (128, 64, …, 1). Одна шістнадцяткова цифра — це рівно чотири біти, а в 8-бітовому доповняльному коді крайній лівий біт має вагу −128. Порозрядні операції працюють з кожною позицією біта окремо.
Біт за бітом
Зсув праворуч на 3 переміщує кожен біт на 3 позицій праворуч; біти, що випадають з правого краю, втрачаються, а зліва додаються нулі.
0111 0001 >> 3
= 0000 1110
Значення результату
0000 1110₂ = 14
Відповідь
R = 14
Запитання й відповіді
Системи числення: що це?
У повсякденному житті ви рахуєте в десятковій системі, з основою 10. Вона має десять цифр, від 0 до 9, і кожен розряд коштує вдесятеро більше за розряд праворуч.
У числі 352 цифра 3 означає 300, цифра 5 — 50, а цифра 2 — 2. Розряди коштують 1, 10, 100, якщо йти справа.
Системи числення: як розв’язувати задачі крок за кроком?
Позиційні системи числення: кожна цифра варта свого значення, помноженого на степінь основи. У двійковій системі розряди варті 1, 2, 4, 8, 16, …, у шістнадцятковій 1, 16, 256, …, де A–F означають 10–15. У 8-бітовому додатковому коді крайній лівий біт вартий −128 замість +128; так зберігаються від'ємні числа.
Системи числення: що ви тренуєте?
Легка: з двійкової і шістнадцяткової в десяткову
Середня: додатковий код
Складна: біти, діапазони і пам'ять
Кожна задача має нові значення, тож ви вивчаєте метод, а не відповідь. Застрягли? Спершу відкрийте невелику підказку, а повне пояснення — лише коли воно знадобиться.
Як проходить тренування
Кожна задача має нові значення, тож ви вивчаєте метод, а не відповідь.
Застрягли? Спершу відкрийте невелику підказку, а повне пояснення — лише коли воно знадобиться.
Ваш прогрес, помилки та збережені задачі зберігаються, тож перед іспитом ви зможете все повторити.