Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 1.3.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
276.99 Кб
Скачать

ЛАБОРАТОРНА РОБОТА №1.3

ШІСТНАДЦЯТКОВА СИСТЕМА ЧИСЛЕННЯ.

АРИФМЕТИЧНІ ОПЕРАЦІЇ НАД ДВІЙКОВИМИ ЧИСЛАМИ.

Мета роботи: навчитися працювати з шістнадцятковою системою числення.

.

КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ.

ШІСТНАДЦЯТКОВА СИСТЕМА ЧИСЛЕННЯ.

Двійкова система числення.

Наша десяткова система числення є позиційною в тому сенсі, що величина числа залежить від порядку цифр у ньому. Наприклад, число 534.686 в 10 разів більше, ніж 53.4686, оскільки позиції одних і тих же цифр щодо десяткового дробу різні. Насправді, коли ми пишемо 534.686, ми маємо на увазі число

Положення цифри щодо десяткового дробу визначає ступінь числа 10, на яку ця цифра буде помножена при обчисленні суми.

Зазначимо фундаментальне значення числа 10 у десятковій системі. Підставою позиційної системи числення називається число, споруджений у відповідні ступені в розгорнутому поданні чисел цієї системи. Таким чином, підставою десяткової системи числення є число 10.

Те, що ми використовуємо десяткову систему, до деякої міри є випадковістю. Якби у людини було 8 пальців, а не 10, ми, ймовірно, використовували б восьмеричну систему, що, треба відзначити, полегшило б винахід обчислювальних машин і їх вивчення.

Інформація в більшості сучасних ЕОМ зберігається і обробляється в двійковій формі. У двійковій системі існує всього дві цифри, або біта, 0 і 1. Однією з причин використання саме цієї системи в програмуванні є те, що звичайні електронні перемикачі можуть перебувати тільки в одному з двох станів - включеному або вимкненому. Крім того, логіка, яку ми використовуємо, по своїй суті є двійковій логікою: будь-яка пропозиція в ній або істинно, або хибно. Таким чином, ми вживаємо біти для позначення 1 або 0, станів «включено» або «вимкнено», істини або брехні.

У нашому повсякденному житті ми використовуємо десяткову арифметику. У програмуванні більш природною є двійкова система. Значить, нам доведеться часто перетворювати числа з двійкової системи в десяткову і навпаки.

Оскільки підставою двійковій системи є число 2, ми можемо визначити десяткове значення двійкового числа, розписуючи двійкове число у вигляді суми ступенів двійки і обчислюючи отриману суму, використовуючи десяткову арифметику. Наприклад, для перетворення числа 11011.1001 в десяткову форму можна записати

У результаті ми отримали

Іншими словами, система, в якій записано число, визначається підстрочним зазначенням основи цієї системи наприкінці числа.

Тепер розглянемо зворотне перетворенням дано десяткове число. Як перевести його в двійкову форму? Пропонований алгоритм дуже нагадує алгоритм ділення в стовпчик і може бути добре проілюстрований на прикладі.

Ми хочемо перевести число в його двійковий еквівалент. Виконаємо перетворення в дві стадії, перетворюючи цілу і дробову частини вихідного числа окремо.

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

Тепер для отримання результату залишилося лише записати залишки в порядку «знизу вгору». отримаємо

(Перевірте цей результат, виконавши зворотне перетворення.)

Для відповідного перетворення десяткового дробу в двійкову ми послідовно будемо множити десяткову дріб на 2, записуючи 1 кожного разу при отриманні числа, по модулю більшого 1 (перенесення в цілу частину), і 0 у противному випадку. При наступних множенням використовується тільки дрібна частина отриманого числа. У нашому прикладі ми маємо

Очевидно, цей процес можна продовжити до безкінечності; двійкове подання десяткового числа є періодичною дробом. Для отримання відповіді необхідно виписати всі перенесення в порядку «зверху вниз». Тобто

і в кінцевому підсумку ми отримуємо

з нескінченною дробової частиною.

Зауваження з приводу отриманого результату. Більшість десяткових дробів, наприклад, такі, як 1, 2, 06, не можуть бути представлені у вигляді кінцевих двійкових. Але ЕОМ оперують лише числами, представленими кінцевими наборами цифр. Це веде до неминучих помилок округлення, які виникають при відкиданні молодших розрядів числа, необхідному для запису його у вигляді кінцевого машинного слова.

Чим більше розрядів використовується для представлення дробів, тим більше точність одержуваного наближення. Так, використовуючи всього 4 двійкових розряди для представлення числа 2, ми мали б

при використанні 8 бітів ми отримуємо більш точний результат

Шістнадцяткова система числення.

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

Шістнадцяткова система, або система з основою 16, володіє цією властивістю і широко використовується в тих випадках, коли двійкова інформація легко подана в вигляді груп по 4 біта в кожній. Оскільки основа системи дорівнює 16, то в ній повинні існувати 16 різних цифр. У нас є 10 цифр нашої десяткової системи числення, їх ми і використовуємо в якості перших 10 цифр шістнадцяткової системи. В якості інших шести цифр ми використовуємо літери А, В, С, D, Е, F.

На рис. 2.1 зображені перші десяткові числа і їх двійкове і шістнадцяткове подання. Зазначимо, що кожне 4-розрядне двійкове число відповідає певній цифрі шістнадцяткової системи. Саме це дозволяє легко проводити перетворення з однієї системи в іншу. Для перетворення двійкового числа на шістнадцяткове потрібно розбити двійкове число на групи, по 4 біта в кожній, рухаючись вправо і вліво від десяткового дробу. Потім потрібно додати до крайніх групам нулі для доповнення їх до 4 розрядів,

Десят.

Двійкова

Шістнад.

0

0000

0

1

0001

1

2

0010

2

3

0011

3

4

0100

4

5

0101

5

6

0110

6

7

0111

7

8

1000

8

9

1001

9

10

1010

А

11

1011

в

12

1100

С.

13

1101

D

14

1110

Е

15

1111

F

Рис. 2.1. Десяткові, двійкові і шістнадцяткові числа.

якщо це буде потрібно. Наприклад, для перетворення

на шістнадцяткове, потрібно записати

Тепер ми знаходимо кожну групу з чотирьох цифр, розглянуту як двійкове ціле, в таблиці, зображеної на рис. 2.1, і виписуємо відповідні шістнадцяткові цифри для кожної групи (після невеликої практики пошук в таблиці стане непотрібним). У нашому прикладі

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

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

Нарешті, переклад десяткового цілого на шістнадцяткове може бути виконаний приблизно так само, як і переклад десяткового цілого в двійкове; різниця полягає в тому, що на кожному кроці ми ділимо десяткове число на 16 і записуємо залишки в шістнадцятковому вигляді.

Ось процес перекладу 638.0 в шістнадцяткову форму:

І в результаті отримуємо

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

Множення і ділення на 16 набагато складніші, ніж множення і ділення на 2. Тому для перекладу десяткового числа на шістнадцяткове набагато зручніше спочатку перевести десяткове число в двійкове і лише потім перевести результат у шістнадцяткову форму. Найбільш ж просто можна зробити перетворення з десяткової системи в шістнадцяткову, використовуючи таблиці додатка 4 або довідкові карти фірми IBM.