Лабораторна робота №2
Тема:
Перетворення 
кодів з однієї системи числення в іншу
.
Мета
:
Отримати навички переведення натуральних чисел між системами числення з різними основами. 
Завдання:
Згідно номера по списку в журналі викладача
необхідно вибрати десяткове число K
із табл. 1.
Таблиця 1 – Вихідні дані
|   №п/п  | 
  1  | 
  2  | 
  3  | 
  4  | 
  5  | 
  6  | 
  7  | 
  8  | 
  9  | 
  10  | 
  11  | 
  12  | 
  13  | 
  14  | 
  15  | 
|
|   Число К
  | 
  486  | 
  317  | 
  281  | 
  307  | 
  436  | 
  214  | 
  193  | 
  325  | 
  501  | 
  142  | 
  398  | 
  267  | 
  186  | 
  469  | 
  369  | 
|
|   16  | 
  17  | 
  18  | 
  19  | 
  20  | 
  21  | 
  22  | 
  23  | 
  24  | 
  25  | 
  26  | 
  27  | 
  28  | 
  29  | 
  30  | 
  Приклад  | 
|
|   165  | 
  205  | 
  346  | 
  452  | 
  374  | 
  175  | 
  412  | 
  159  | 
  274  | 
  358  | 
  245  | 
  385  | 
  423  | 
  253  | 
  295  | 
  234  | 
|
Необхідно: 
перевести взяте з табл. 1 число K
між десятковою, двійковою, вісімковою та шістнадцятковою системами числення.
Теоретичні дані:
Перш за все слід відзначити, що найбільш звичною системою числення для людини є десяткова система. Саме вона використовується у повсякденному житті: під час навчання, при розрахунках в магазині, в таксі/маршрутці/трамваї тощо. Крім десяткової системи числення для тих чи інших цілей можуть використовуватися двійкова і кратні до неї – вісімкова та шістнадцяткова – системи числення.
В теорії інформації, а саме в тій її частині, що стосується перетворення кодів з однієї системи числення в іншу, одним із основних є поняття алфавіту
(позначається ) з основою
.
Алфавіт
– це множина цифр
, за допомогою яких складається число 
.
В загальному вигляді поняття алфавіту можна представити у вигляді виразу:
(1)
де  – 
загальна кількість цифр  алфавіту .
Загальна кількість  цифр  алфавіту  називається основою системи числення
.
Існують різноманітні алфавіти, що відрізняються загальною кількістю цифр, які можуть використовуватися при складанні числа.
Для ілюстрації приведемо в табл. 2 вказані характеристики найбільш вживаних систем числення:
Таблиця 2 – Характеристики алфавітів найбільш поширених систем числення
|   Алфавіт  | 
  Множина цифр алфавіту  | 
  Основа  | 
|
|   двійковий  | 
 
 | 
 
 | 
 
 | 
|   вісімковий  | 
 
 | 
 
 | 
 
 | 
|   десятковий  | 
 
 | 
 
 | 
 
 | 
|   шістнадцятковий  | 
 
 | 
  *
  | 
 
 | 
*
– символи, які позначають в алфавіті  цифри, які відповідають десятковим числам 10, 11, 12, 13, 14 та 15 відповідно.
Таким чином, в якості коректних двійкових чисел можна вказати такі: 100111, 111, 0, 10; тоді як число 100211 неможливе, адже в двійковому алфавіті немає цифри "2". З аналогічних причин можливі шістнадцяткові числа 106, E1F, 1BC, 589, проте неможливі 1I6, O04, 3P24.
Основа системи числення деякого числа  вказується після нього у вигляді нижнього індексу, наприклад, запис 200910
означає десяткове число 2009
.
Для зручності завдання на перекодування чисел з однієї системи числення в іншу запишемо у вигляді відповідності між їх основами: (пряме перекодування), або (пряме перекодування з подальшою перевіркою).
Для ілюстрації даного положення розглянемо три вирази:
1)  = 786110
,  = , 
2)  = 786110
,  = , 
3)  = 786110
,  = .
Перший вираз
слід інтерпретувати так: дано десяткове число 7861, його необхідно перекодувати з десяткової системи числення в двійкову, з якої в вісімкову, а потім число з вісімкової системи – у шістнадцяткову. 
Другий вираз
передбачає те саме, що і перший вираз, за винятком того, що після кожного прямого перекодування
необхідно додатково виконати
перевірку
– 
зворотне перекодування.
Третій вираз
вимагає переведення десяткового числа лише з десяткової системи числення у двійкову, вісімкову та шістнадцяткову, відповідно, з виконанням перевірок після кожного перекодування.
З цифр алфавіту можна скласти велику кількість чисел :
 , 
(2)
де  –
кількість цифр числа .
Порядковий номер цифр числа  визначається справа наліво, починаючи з нуля і називається розрядом 
цифр. Таким чином в числі  (2) є  розрядів: від 0-го розряду (крайня цифра справа, також називається молодшим розрядом
) до –1-го розряду (крайня цифра зліва, також називається старшим розрядом
). Наприклад,  можна розглядати як п’ятирозрядне двійкове число (нуль в старшому розряді можна не писати, тобто ).
Враховуючи, що у числі розрядів (цифр), а в алфавіті є цифр, можна визначити загальну кількість -розрядних чисел як:
(3)
Таким чином, наприклад, різних чотирьохрозрядних чисел в алфавіті можна отримати (адже , =2 та =4), а за допомогою алфавіту – вже чисел тієї ж розрядності.
Питання для самоперевірки
засвоєння основних теоретичних положень:
– для числа = 2009 вкажіть кількість розрядів , кількість використаних цифр із алфавіту та основу прийнятої системи числення;
– для вісімкового числа 123456 вкажіть цифри, що знаходяться в першому, в останньому та в -му розрядах;
– вкажіть всі коректні числа із наступного списку, враховуючи множини цифр розглянутих вище алфавітів (див. табл. 2): 202
, 10O2
, 45616
, 10112
, 10118
, 5810
, 5816
, 588
, 1516
, 1616
, AІ9816
, 10116
, 10
, 4СF10
, 4GF16
(увага: можуть бути літери, які схожі на десяткові цифри)
;
– вкажіть коректні чотирирозрядні числа: 00112
, 210FF16
, H2
O, 10218
, 022210
, H1N116, 
AD1A8
, 5A11F16
, 22222
, 011018
, 17148
, 53C716
;
– визначіть загальну кількість різних трирозрядних чисел, що може бути сформована за допомогою алфавітів , , та .
Вирішення задачі: 
Для ілюстрації вирішення поставленої задачі, із табл. 1 вибрано десяткове число 234. З врахуванням викладеного вище матеріалу, умову поставленої задачі можна скорочено зобразити наступним чином:
Умова задачі:
 = 23410
, .
Розглянемо декілька способів перекодування чисел з однієї системи числення в іншу.
1-й спосіб перекодування чисел
. 
Перекодування чисел згідно з даним способом здійснюється за допомогою ділення числа  на  за допомогою арифметики з основою . Цифрами числа  в системі числення з основою  будуть залишки від ділення. Зручно користуватися цим способом при переведенні з десяткової системи
числення () в будь-яку іншу, оскільки використовується десяткова арифметика.
Нижче проілюстрований порядок перекодування чисел з десяткової системи числення в двійкову, вісімкову та шістнадцяткову:
Умова 1:
 = 23410
, .
Виконаємо дане перекодування в три етапи, при цьому початкове число на цих етапах становить  = 23410
:
1) , 2) , 3) .
|   234  | 
  2  | 
 
 | 
  ділимо число К 
  на основу m
  | 
  234  | 
  8  | 
  234  | 
  16  | 
|||||||||
|   234  | 
  117  | 
  2  | 
  232  | 
  29  | 
  8  | 
  224  | 
  14(Е)  | 
|||||||||
|   0  | 
  116  | 
  58  | 
  2  | 
  2  | 
  24  | 
  3  | 
  10(A)  | 
  а
  | 
||||||||
|   а
  | 
  1  | 
  58  | 
  29  | 
  2  | 
  а
  | 
  5  | 
  а
  | 
  а
  | 
||||||||
|   а
  | 
  0  | 
  28  | 
  14  | 
  2  | 
  а
  | 
|||||||||||
|   а
  | 
  1  | 
  14  | 
  7  | 
  2  | 
 
 | 
|||||||||||
|   а
  | 
  0  | 
  6  | 
  3  | 
  2  | 
 
 | 
|||||||||||
|   а
  | 
  1  | 
  2  | 
  1  | 
|||||||||||||
|   а
  | 
  1  | 
  а
  | 
  1 – ознака закінчення розрахунків  | 
|||||||||||||
|  
 | 
  а
  | 
|||||||||||||||
|   порядок запису результату  | 
  порядок запису результату  | 
|||||||||||||||
Таким чином отримаємо  = 23410
= 111010102 
= 3528 
= EA16
.
2-й спосіб перекодування чисел
. 
Перекодування чисел згідно з даним способом здійснюється за допомогою множення цифр числа  на основу системи числення  в степені, що відповідає розряду кожної цифри в числі ,
тобто:
(4)
Даним способом зручно користуватися при переведенні в десяткову систему
числення з інших систем, зважаючи на те, що при цьому використовується десяткова арифметика.
Виконаємо перевірку отриманих вище результатів перекодування з десяткової системи числення:
Умова 2:
 = 111010102 
= 3528 
= EA16
, .
Перевірку здійснимо за три етапи:
1)  = 111010102
, 
2)  = 3528
, 
3)  = EA16
, 
Всі три результати однакові і рівні взятому із завдання числу  = 23410
. Це свідчить, що пряме перекодування чисел, що було виконано першим способом,
дало правильні результати. 
3-й спосіб перекодування чисел
. 
Даний спосіб доцільно використовувати при перекодуванні чисел між системами числення з основою 
, де  (тобто основи систем, з якої і в яку переводиться число, повинні бути кратні 2).
Стосовно поставленої умови задачі, що вирішується, за допомогою цього способу може бути здійснено пряме перекодування числа попарно між двійковою, вісімковою та шістнадцятковою системами, а також виконано перевірку отриманих результатів.
Умова 3:
 = 111010102
, .
Для виконання вказаного перекодування необхідно вміти поставити у відповідність будь-якій цифрі алфавітів та деяку послідовність цифр алфавіту . З цією метою далі приведена табл. 3, в якій кожній цифрі із систем числення з основами (, звідки ) та (, звідки ) відповідає послідовність із цифр двійкового алфавіту (-розрядне двійкове число).
Таблиця 3 – Відповідність цифр алфавітів та цифрам алфавіту .
|   цифри ,  | 
  цифри ,  | 
||||
|   цифра  | 
  цифра  | 
  цифра  | 
  цифра  | 
  цифра  | 
  цифра  | 
|   0  | 
  000*
  | 
  0  | 
  0000  | 
  8  | 
  1000  | 
|   1  | 
  001  | 
  1  | 
  0001  | 
  9  | 
  1001  | 
|   2  | 
  010  | 
  2  | 
  0010  | 
  A(10)  | 
  1010  | 
|   3  | 
  011  | 
  3  | 
  0011  | 
  B(11)  | 
  1011  | 
|   4  | 
  100  | 
  4  | 
  0100  | 
  C(12)  | 
  1100  | 
|   5  | 
  101  | 
  5  | 
  0101  | 
  D(13)  | 
  1101  | 
|   6  | 
  110  | 
  6  | 
  0110  | 
  E(14)  | 
  1110  | 
|   7  | 
  111  | 
  7  | 
  0111  | 
  F(15)  | 
  1111  | 
*
У більшості випадків нулі в старших розрядах двійкових чисел ігноруються (наприклад, справедлива наступна рівність 0000112 
= 0112 
= 112
). Таким чином, при тій чи іншій потребі, можна як додавати нулі в старші розряди, так і нехтувати зайвими нулями в старших розрядах двійкового числа.
Для перекодування необхідно, починаючи з 0-го розряду (крайня цифра справа), розбити двійкове число на групи цифр по розрядів в кожній (якщо кількість розрядів двійкового числа не кратна , для зручності можна дописати необхідну кількість нулів в старші розряди цього числа). Далі відбувається заміна кожної групи із двійкових цифр на одну цифру системи числення з основою згідно з наведеною вище табл. 3. Аналогічним чином відбувається зворотне перекодування чисел.
Таким чином, виконаємо перетворення з двійкової системи числення у вісімкову і шістнадцяткову та навпаки:
Умова 3.1:
 = 111010102
, .
Такі перетворення виконуються за чотири етапи:
1)  = 111010102
,  (пряме перекодування).
,
де 0112 
= 38
, 1012 
= 58
, 0102 
= 28
(див. табл. 3 враховуючи, що 8 та =3).
2)  = 3528
,  (перевірка результату першого етапу).
,
де 38 
= 0112
, 58 
= 1012
, 28
= 0102 
(див. табл. 3, враховуючи, що 8 та =3).
3)  = 111010102
,  (пряме перекодування).
,
де 11102 
= Е16
, 10102 
= А16
(див. табл. 3 враховуючи, що 16 та =4).
4)  = ЕА16
,  (перевірка результату третього етапу).
,
де Е16
= 11102
, А16
= 10102
(див. табл. 3 враховуючи, що 16 та =4).
Отримавши навички щойно розглянутого перекодування чисел можна здійснити перекодування чисел з вісімкової системи в шістнадцяткову та навпаки. Це відбувається шляхом виконання перекодування з початкової системи числення в двійкову, а потім в кінцеву систему числення.
Умова 3.2:
 = 3528
, .
Таким чином, перевід заданого числа  = 3528
з вісімкової системи в шістнадцяткову вимагатиме виконання спочатку другого
, а потім третього
етапів вирішення щойно розглянутої умови 3.1
. Для зворотного перекодування, в свою чергу, потрібно здійснити четвертий
та перший
етапи вирішення цієї ж умови
.
Отже, здійснимо необхідні перекодування в два етапи:
1)  = 3528
,  (пряме перекодування).
,
де 38 
= 0112
, 58 
= 1012
, 28
= 0102
, 11102 
= Е16
, 10102 
= А16
(див. табл. 3).
Нуль в старшому розряді двійкового числа ігнорується.
2)  = ЕА16
,  (перевірка результату першого етапу).
,
де Е16
= 11102
, А16
=10102
, 0112 
= 38
, 1012 
= 58
, 0102 
= 28
(див. табл. 3).
Висновок:
В процесі вирішення поставленої задачі були отримані навички перекодування натурального числа K
= 23410
між системами числення з основами m
=2, m
=8, m
=10 та m
=16, що дало наступні результати: 23410 
= 111010102 
= 3528 
= ЕA16
. Виконана перевірка показала правильність отриманих результатів.