Любі діти! Тема «Кодування даних та апаратне забезпечення», яку ми зараз з вами вивчаємо, не проста в засвоєнні. Тому опрацюйте, будь-ласка, ще раз цей матеріал.
Розв’язок задачі «Марсіани» можна переглянути за посиланням:
http://susvas.blogspot.com/2020/10/blog-post_9.html
Системи числення
Отже, природньою для нас є десяткова система числення - це та, якою ми користуємося щодня. Для запису чисел у десятковій системі використовуються 10 знаків - арабські цифри від 0 до 9 (зверніть увагу: 9 на 1 менше за 10 - основу системи числення), кожен розряд числа записується однією цифрою і має певну "вагу".
Наприклад, візьмемо число 284 - воно має 3 розряди. Згідно того, чому нас вчили у школі, це одиниці, десятки та сотні. Відповідно, "вага" цих розрядів становить 1, 10 та 100; або, виражаючи їх через нашу основу числення, 100, 101, 102 (зверніть увагу: розряди для цього нумеруються справа наліво). Знаючи вагу розрядів, ми легко можемо віднайти саме число: 2*100 + 8*10 + 4*1 = 284. Погодьтеся, для десяткової системи це було нескладно.
З будь-якої системи числення у десяткову
В обчислювальній техніці
застосовується двійкова система, основою якої є двійка, а для запису чисел,
відповідно, використовуються 0 або 1. Чому так? Тому що 0 або 1 простіше
передавати між елементами ніж 10 різних значень, і зберігати в пам'яті 0 або 1
також простіше. За тим самим принципом працює і вона.
Наприклад, число 10010 (у двійковій
системі). Звичайно, ваги розрядів вже не будуть десятками та сотнями, але так
саме залишаються степенями основи системи числення, тобто 1=20, 2=21, 4=22,
8=23, 16=24. І тепер ми можемо легко перетворити це число у десяткову систему:
1*16 + 0*8 + 0*4 + 1*2 + 0*1 = 16 + 0
+ 0 + 2 + 0 =18.
Можете перевірити мене на
калькуляторі.
Аналогічним чином можна перевести
число з будь-якої системи числення у десяткову - це сума добутків значення
кожного розряду на його вагу, де вага - це основа системи числення, піднесена у
степінь, рівний порядковому номеру розряду справа наліво, починаючи з 0.
Моторошно? Можемо порахувати ще трохи.
Шістнадцяткова система також
дуже популярна - 2 розряди у ній позначають 1 байт даних. Так як арабських цифр
не вистачає, в якості інших 6 символів використовуються латинські літери від A
до F. Візьмемо 1A3F і переведемо в десяткову систему:
1*163 + A*162 + 3*161 + F*160 =
1*163 + 10*162 + 3*161 + 15*160 =
1*4096 + 10*256 + 3*16 + 15*1 =
4096 + 2560 + 48 + 15 =
6719.
Власне, система числення може мати
будь-яку основу. Наприклад, в трійковій системі для позначення розрядів
використовуватимуться 0, 1 та 2. Візьмемо яке-небудь 210120:
2*35 + 1*34 + 0*33 + 1*32 + 2*31 +
0*30 =
2*243 + 1*81 + 0*27 + 1*9 + 2*3 + 0*1
=
486 + 81 + 0 + 9 + 6 + 0 =
582.
З десяткової системи числення у будь-яку іншу
Для того ж, щоб перевести число з
десяткової системи у будь-яку іншу, слід виконати зворотні дії: ділити
початкове число на ваги розрядів і отримати таким чином їх значення.
Або можна згадати, що кожний
наступний розряд - по суті перенос того, що не вмістилося у попередній, і трохи
спростити розрахунки: брати не початкове число, а те, що залишилося від
попереднього ділення, ділити його прямо на основу і брати остачу від ділення.
Переведемо наше десяткове 284 в
двійкову систему:
284 / 2 = 142 (це те, що не
вміщається в нульовий розряд), остача 0 (те що вмістилося)
142 (те, що не вмістилося в
попередній розряд) / 2 = 71, остача 0
71 / 2 = 35, остача 1
35 / 2 = 17, остача 1
17 / 2 = 8, остача 1
8 / 2 = 4, остача 0
4 / 2 = 2, остача 0
2 / 2 = 1, остача 0
1 / 2 = 0, остача 1, далі немає куди
ділити
Тепер ці остачі від останньої до
першої - це і є розряди двійкового числа: 100011100
Або 582 назад у трійкову:
582 / 3 = 194, остача 0
194 / 3 = 64, остача 2
64 / 3 = 21, остача 1
21 / 3 = 7, остача 0
7 / 3 = 2, остача 1
2 / 3 = 0, остача 2
Записуємо остачі від останньої до
першої - 210120 - те саме число, яке ми переводили з трійкової системи, отже
все вірно.
З будь-якої в будь-яку
Все так само :-) Просто арифметичні
операції доведться проводити не в десятковій системі. Тому простіше перевести
число з початкової системи числення в десяткову, а те, що отримаємо - в ту, яка
нам необхідна.