Лабораторна робота №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
. Виконана перевірка показала правильність отриманих результатів.