Системи числення: задачі з покроковими розв’язками

Інші назви: двійкова система · шістнадцяткова система · переведення чисел

Безкоштовні задачі з теми Системи числення з рисунками, підказками й повними розв’язками. Щоразу нові значення, трьох рівнів: з двійкової і шістнадцяткової в десяткову, додатковий код, біти, діапазони і пам'ять.

Безкоштовна задачаЛегка
клацайте біти, щоб встановити їх012806403201608040201

Встановіть біти так, щоб 8-бітовий регістр містив 0x99. Яке значення N шаблону в десятковій системі?

0x99

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

Наступна задача →

Що ви тренуєте

  1. Легказ двійкової і шістнадцяткової в десяткову
  2. Середнядодатковий код
  3. Складнабіти, діапазони і пам'ять

Основні формули

Ваги розрядів
двійкова 2k, вісімкова 8k, шістнадцяткова 16k
У десяткову
Σ dk·bk
З десяткової
діліть на основу, остачі читайте знизу вгору
Шістнадцяткова ↔ двійкова
одна шістнадцяткова цифра = 4 біти
Додатковий код
інвертуйте біти й додайте 1

Вивчайте тему «Системи числення» з нуля

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?
  1. 7000
  2. 700
  3. 70
  4. 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.

012806413211608041201

Щоб прочитати двійкове число, додайте вагові значення розрядів усіх бітів, що дорівнюють 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 у десятковій системі?
  1. 110
  2. 11
  3. 161
  4. 26

Відповідь: 26. A = 10. Розряди — 16 і 1, тож 1 · 16 + 10 · 1 = 26. Записати цифри поруч (110) або додати їх (11) означає ігнорувати вагові значення розрядів. 161 бере розряди в хибному порядку.

3Від’ємні числа: доповняльний код

Байт, у якому всі розряди додатні, зберігає від 0 до 255. Це називають беззнаковим числом.

Щоб зберігати від’ємні числа, комп’ютери використовують доповняльний код (two’s complement). Єдина зміна: крайній лівий біт дорівнює −128 замість +128.

1−12806403201608041211

Отже, 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 зберігає число в доповняльному коді. Яке його значення?
  1. 255
  2. −127
  3. −128
  4. −1

Відповідь: −1. −128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = −1. 255 — беззнакове прочитання. −127 виходить, якщо вважати перший біт знаком мінус перед 111 1111.

4Метод крок за кроком

Двійкове чи шістнадцяткове число в десяткове:

  1. Запишіть вагу розряду під кожною цифрою: степені 2 для двійкових, степені 16 для шістнадцяткових, починаючи з 1 справа.
  2. У шістнадцятковій системі замініть кожну літеру її значенням: від A = 10 до F = 15.
  3. Помножте кожну цифру на вагу її розряду й додайте все.

Доповняльний код:

  1. Щоб прочитати шаблон, надайте крайньому лівому біту значення −128 (у 8 бітах) і додайте ваги всіх одиничних бітів.
  2. Щоб записати −x, запишіть +x у 8 бітах, інвертуйте кожен біт і додайте 1.
  3. Беззнакове значення цього шаблону дорівнює 256 − x. Користуйтеся ним, щоб перевірити біти.

Біти, діапазони й пам’ять:

  1. n бітів дають 2ⁿ різних шаблонів.
  2. Беззнакові вони зберігають від 0 до 2ⁿ − 1. У доповняльному коді — від −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1.
  3. Щоб дати k елементам власні коди, знайдіть найменше b, для якого 2b ≥ k.
  4. Для пам’яті помножте кількість елементів на кількість бітів на елемент, потім поділіть на 8 для байтів і на 1024 для KiB.
M = ширина × висота × бітів на піксель / 8 / 1024 (KiB)

5Розв’язаний приклад

Простежте кожен крок. Спробуйте передбачити наступний, перш ніж його відкрити.

Розв’язаний приклад

8-бітний шаблон 1011 0110 зберігає знакове ціле число в доповняльному коді. Яке його значення N у десятковій системі?

1

Запишіть ваги розрядів

1−12806413211608141201

У доповняльному коді крайній лівий розряд має вагу −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-бітний шаблон доповняльного коду?
  1. 0000 0101
  2. 1000 0101
  3. 1111 1010
  4. 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 елементам власні коди?
  1. 188
  2. 512
  3. 8
  4. 9

Відповідь: 9. 2⁸ = 256 — замало кодів, 2⁹ = 512 вистачає, тож 9 бітів. 512 — це кількість кодів, а не бітів.

Вивчайте крок за кроком у застосункуВивчайте крок за кроком у застосунку

Розв’язані приклади

Приклад 1Легка
ваги розрядів2256B16E1

Переведіть шістнадцяткове число 0x2BE у десяткове. Знайдіть N.

0x2BEA = 10 … F = 15

Знайти: N

Показати підказки
  1. Шістнадцяткові розряди справа варті 1, 16, 256, 4096.
  2. Замініть літери їхніми значеннями (A = 10 … F = 15), помножте на вагу розряду і додайте.
  3. 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Середня
8-бітовий додатковий код0−12806403201608040201

Встановіть біти так, щоб вони зберігали −45 в 8-бітовому доповняльному коді. Яке значення U шаблону, якщо читати його як беззнакове число?

N = −458 bit

Знайти: U

Показати підказки
  1. Запишіть 45 у двійковій системі, інвертуйте кожен біт, потім додайте 1.
  2. 45 = 0010 1101₂.
  3. Як беззнакове число шаблон дорівнює 256 + N.
Показати відповідь і покроковий розв’язок

Встановлення бітів: кожен біт має вагу степеня двійки (128, 64, …, 1). Одна шістнадцяткова цифра — це рівно чотири біти, а в 8-бітовому доповняльному коді крайній лівий біт має вагу −128. Порозрядні операції працюють з кожною позицією біта окремо.

Інвертуйте і додайте одиницю

45 = 0010 1101
інвертовано: 1101 0010
+1 → 1101 0011

Прочитайте як беззнакове

1101 0011₂ = 256 − 45 = 211

Відповідь

U = 211
Приклад 3Складна
клацайте біти, щоб встановити їх012806403201608040201

Встановіть біти за 8-бітовим результатом 0111 0001 >> 3. Яке значення R результату в десятковій системі?

0111 0001>> 3

Знайти: R

Показати підказки
  1. Зсув праворуч на 3 переміщує кожен біт на 3 позицій праворуч; біти, що випадають з правого краю, втрачаються, а зліва додаються нулі.
  2. Опрацьовуйте по одній позиції біта, зліва направо.
  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; так зберігаються від'ємні числа.

Системи числення: що ви тренуєте?
  • Легка: з двійкової і шістнадцяткової в десяткову
  • Середня: додатковий код
  • Складна: біти, діапазони і пам'ять

Кожна задача має нові значення, тож ви вивчаєте метод, а не відповідь. Застрягли? Спершу відкрийте невелику підказку, а повне пояснення — лише коли воно знадобиться.

Як проходить тренування

  • Кожна задача має нові значення, тож ви вивчаєте метод, а не відповідь.
  • Застрягли? Спершу відкрийте невелику підказку, а повне пояснення — лише коли воно знадобиться.
  • Ваш прогрес, помилки та збережені задачі зберігаються, тож перед іспитом ви зможете все повторити.

Теми до і після цієї

Далі

Калькулятори

Курси з цією темою

Інші теми: Інформатика

Робочий аркуш для друку