Материал: Інформатика_1 (методи побудови алгоритмівта та їх аналіз)

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

41

За аналогією з вісімковою системою числення можна зроби-ти висновок, що кожній цифрі шістнадцяткової системи чис­лення відповідає тетрада двійкових цифр.

Зверніть увагу на те, як ми позначили символи шістнад-цяткової системи числення, які більші за 9. Крім того, зверніть увагу на співвідношення 2' = 16, пригадайте, що 23 = 8, і прове-діть аналогію.

Для переведения шістнадцяткового числа у двійкову систе­му числення достатньо кожну цифру заданого числа замі-нити відповідною тетрадою двійкових цифр, зберігаючи їх послідовність.

Наприклад, АВ9С116 = 1010 1011 1001 1100 00012.

ІДля переведения чисел із двійкової системи числення у ШІСТ-надцяткову треба розбити задане число на тетради справа наліво і замінити кожну тетраду відповідною шістнадцятко-вою цифрою.

Розглянемо вже знайомий приклад: 101001100000111012 = 0001 0100 1100 0001 11012 = 14C1D16.

Проаналізувавши наведені правила, можна відповісти на таке запитання: скільки потрібно двійкових цифр для того, щоб зобразити будь-яку цифру системи числення з основою 32 у двійковій системі? Справді, п'ять, адже 25 - 32.

Шдсумовуючи все вищесказане, можна відповісти на за­питання: яке відношення мають системи числення до основ алгоритмізації? А відповідь буде такою.

По-перше, тепер нам зрозуміло, за якими правилами пере-водяться десяткові числа, які ви визначаєте в програмах, у двій-кову систему числення, в якій працює комп'ютер, і навпаки.

По-друге, при програмуванні для компактності будь-яка двійкова інформація задається у шістнадцятковому вигляді.

По-третє, тепер зрозуміло, чому порції інформації, якими при роботі обмінюються різні компоненти комп'ютера, скла-даються саме з 8, 16 та 32 бітів. Пригадайте про розрядність комп'ютерів!

Чи можна реалізувати на комп'ютері переведения чисел з однієї системи числення в іншу для випадку, коли їхні основи є степенями числа 2? Зрозуміло, що така можливість існує. Представимо фрагмент програми, що реалізує переведения чисел із вісімкової системи числення у двійкову і навпаки:

function _8_2 (у: string): string; begin

ify = '0'then_8_2:='000';

42

if у if у if у if у if у if у if у end; function begin

if У

ify ify ify ify ify ify ify end;

Tthen

8 2

= '001';

'2' then

8 2

= '010';

'3'then

8 2

= '011';

'4' then

8 2

= 400';

'5' then

8 2

= '101';

'б' then

8 2

= '110';

T then

8 2

= '111';

_2_8 (y: string): string;

=

'О';

=

T;

.=

'2';

=

'З';

•=

■4'-

::-

'5'

:=

'6'

:=

T

'000'then _2_8 •001'then _2_8 '010'then _2_8 '011' then _2_8 ' 100'then _2_8 401'then _2_8 '110'then _2_8 '111'then 2 8

Якщо кількість символів у двійковому представленні за-даного числа не є кратною числу 3, то для коректної заміни тріад двійкового числа на відповідні цифри вісімкової системи числення треба це число спереду доповнити нулями:

writefx = '); readln(x); i := length(x);

if (ch = '2') and (i mod 3 <> 0) then if i mod 3 = 1

then x := '00' + x elsex := '0' + x;

Виклик функцій, що забезпечують переведения чисел із двійкової системи числення у вісімкову і навпаки, можна орга-нізувати так:

i := length(x);

у:=";

while i >= 1 do . case ch of

'1': begin у :=_8_2(x[i]) + y; dec(i, 1)end; | '2': begin у := _2_8 (copy(x, i - 2, 3)) + y; dec(i, 3) end; end;

Аналогічним чином можна реалізувати переведения чисел із двійкової системи числення у шістнадцяткову і навпаки.

ОДНОРОЗРЯДНИЙ СУМАТОР

Ми вже підкреслювали важливість двійкової системи чис­лення для роботи комп'ютера і знаємо, яким чином виконують-

43

ся дії в цій системі числення. Тепер треба з'ясувати, як це ро-бить сам комп'ютер.

Виявляється, що всі арифметичні дії в комп'ютері зведені до однієї дії додавання і виконує її спеціальний електронний пристрій — однорозрядний суматор.

Дія множення виконується як багатократне додавання, від-німання зводиться до додавання, а ділення розглядається як багатократне віднімання, причому за часом таке виконання дій набагато економніше, ніж програмування безпосередніх пра­вил їх виконання.

Розглянемо спочатку, як на логічному рівні побудований однорозрядний суматор. Для цього розглянемо конкретний приклад додавання двох чисел у двійковій системі числення і намагатимемося помітити закономірність у наших діях.

Пригадаємо, що при додаванні у стовпчик результат до­давання завжди розбиваемо на дві частини: кількість одиниць і кількість десятків. Перша цифра записується у тому самому розряді результату, а друга запам'ятовуеться, щоб врахувати и при додаванні у наступному розряді. Це означав, що в роботі завжди буде п'ять величин: два розряди, які додаємо (a, b), кількість десятків, яку запам'ятали від додавання у попе-редньому розряді (с), та кількість одиниць і десятків, що одер-жуються в результаті додавання в даному розряді числа (п, т).

Для пояснения розглянемо невеличкий приклад:

1111

+

ПО

????

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

а = 1,6 = 0,с = 0.

Виконуючи дію додавання в цьому розряді (1 + 0 - 1), ви-значимо кількість одиниць (л) і десятків (т) в отриманому ре­зультат!:

п = 1, т = 0.

У стовпчик можна записати:

+ 0

4-

пи

+

ПО

???1

44

2-й крок. Бачимо, що а = 1, Ь = 1, а трете значения с, почи-наючи з другого кроку, дорівнює значению т на попередньому кроці, тобто с = т » 0. Тепер можемо записати додавання на другому кроці 1 + 1 + 0 = 10.

Тобто отримаемо п = 0, т. = 1:

+ 1 І

1111

+ 110

??01

3-й крок. Оскільки а = 1,Ь = 1,с = т = 1,то1 + 1 + 1 = 11. Отримуємо п - 1 і т = 1:

+ 1

І

1111

+ 110

?101

4-й крок. На оетанньому кроці а = 1, 6 = 0, с = т = 1, 1 + 0 +

+ 1-10.

Запишемо результат додавання у цьому розряді:

+ 1 І

1111

+ 110

0101

5-й крок. Оскільки цифри в доданках уже вичерпані, то за-лишилося проаналізувати значения с = т. Якщо воно дорів-нює 0, то попередній крок був останнім і знайдений результат є відповіддю. Якщо ж с = 1, то в результаті отримується число на порядок більше від найбільшого з двох доданків і найстаршою цифрою в ньому буде 1. Так було і в нашому прикладі:

1111

+ 110

10101

Який же висновок можна зробити з цього прикладу? На кожному кроці ми додавали три величини а, Ь, с і отримували дві величини птат. Значениями цих величин завжди є двійко-ві цифри. Умовно можна сказати, що ми визначили закон пе-ретворення значень трьох величин у значения двох величин у двійковій системі числення. Схематично це можна зобразити так (мал. 2).

45

а

ЗАКОН ПЕРЕТВОРЕННЯ

п к

b

*

с

m >

i

Мал. 2

Оскільки кількість можливих двійкових значень для трьох величин скінченна і дорівнює 8, то неважко записати їх закон перетворення у двійкові значения двох величин. Це відображе-но в таблиці 3.

Таблиця3

а

0

1

0

0

1

0

1

1

Ь

0

0

1

0

1

1

0

1

с

0

0

0

1

0

1

1

1

п

0

1

1

1

0

0

0

1

пг

0

0

0

0

1

1

1

1

Виявляється, що неважно сконструювати електронний пристрій, який працюватиме за таким законом. На вході тако­го пристрою буде знаходитися три провідники, на які подава-тиметься електричнии струм, а на виході - два провідники, на які струм надходитиме. Такий пристрій називається однороз-рядним суматпором.

Ми вже згадували про те, що операція віднімання в ком-п'ютері зведена до операції додавання. Розглянемо правило, яке використовується для отримання різниці між двома числа­ми. Нехай треба виконати дію 10010 - 6410. ЇЇ можна розглянути і в такому вигляді:

10010 + (-64)10.

Тому треба знайти аналог числа 64 у від'ємній область Спочатку переведемо це число у двійкову систему числення:

6410 - 10000002.

Під час робота комп'ютера обробляються восьмирозрядні, шістнадцятирозрядні, тридцятидвохрозрядні порції інфор-мації, тому отриманий двійковий аналог числа 6410 доповнимо до восьми цифр:

10000002 = 01000000,.

46

Наступний крок полягає в отриманні інверсії останнього эображення. Тобто всі цифри 12 необхідно замінити на 02 і нав-паки:

ІНВЄОСІЯ

010000002 « * 101111112.

Тепер додамо до результату інверсії число 12:

10111111,

+ 2

h

110000002

Цей результат і є двійковим значениям числа -6410. Переві-римо це звичайним чином. Для десяткової системи числення справедлива рівність 6410 + (-64)10 ■ 010.

Такий самий результат повинні отримати і в двійковій си­стем! числення:

010000002

110000002

1000000002

Оскільки в отриманому результат! старша цифра, тобто 1, внйшла за межі обумовленої на початку розрядності (восьми розрядів), то вона буде втрачена. Це означае, що підтверджено справедливість нашого результату.

Запитання для самоконтролю

  1. Що таке система числення?

  2. Що розуміють під основою системи числення?

  3. Які основні причини виникнення різних систем числення? За-лишки яких систем числення зустрічаються сьогодні?

  4. На які два типи можна поділити всі існуючі системи числення? Дайте їм означения та наведіть приклади.

  5. Які існують арифметичні операції в різних системах числення?

  6. Сформулюйте правило переведения чисел з 10-Ї системи чис­лення в систему числення з основою Р і навпаки.

  7. У чому полягає зв'язок між системами числення з основою 2*?

  8. Сформулюйте правило переведения двійкових чисел у вісімкову та шістнадцяткову системи числення.

  9. Яке призначення однорозрядного суматора? За яким законом він працює?

Завдання

1. Виконайте арифметичну дію:

1)3546 + 121в; 3) 100018 + 77778;

2) 6666. + 17; 4) 22223 + 22223;

  1. 7589 - 632„;

  2. 3124 - 1234; 7)555558-177778; 8) 400025 - 333335; 9)123-23;

10) 64205, • 47;

11)789-119;

12)3528-1018;

13)246:26;

  1. 1537: 37;

  2. 20025: 45; 16)111114:24.

2. Переведіть число з однієї системи числення в іншу:

1) 199610 - ?5; 2)1838,,, = ?,; 3)8048610 = ?8; 4)32110 = ?2; 5)5555 -?

10'

10'

6) 100405 - ?10 7)18389 = ?10; 8) 20103в-? 9)3248-?з 10)10106=.?5 11)77778«?9 12) 50047 - ?2

13)10000111101111000012- ?8 - ?

  1. 1110001100011112 = ?8 = ?16;

  2. 1010101010102 - ?8 = ?16;

  3. 1000011100011002 = ?8 = ?16; 17)561248 = ?2 = ?,6; 18) 77777778 = ?2 = ?16; 19)100018-?2 = ?16; 20)121318 = ?2 = ?16; 21)1A9DE,6 = ?2 = ?8;

  1. FFFFF16 - ?2 = ?8;

  2. ABCDEF916 = ?2 = ?8;

  3. 20202016 = ?2 = ?8.

II

48

3. Заповніть порожні клітинки таблиці множення.

1)

Система числення з основою 5

1

2

3

4

10

1

1

2

3

4

10

2

2

4

11

3

3

11

4

4

10

10

2)

Система числення з основою 6

1

2

3

4

5

10

1

1

2

3

4

5

10

2

2

4

10

3

3

10

4

4

12

5

5

10

10