Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KR_AK.docx
Скачиваний:
4
Добавлен:
05.09.2019
Размер:
79.57 Кб
Скачать

3 Переведення чисел в десяткову та двійкову системи числення

Як відомо в ЕОМ використовується двійкове представлення чисел. Це пов’язано з тим, що на рівні логічних сигналів така реалізація найбільш зручна, адже потрібно «відслідковувати» тільки два рівні напруги – напругу, що відповідає логічному нулю та напругу, що відповідає логічній одиниці.

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

Процедура переведення цілого числа з будь-якої системи числення в десяткову є досить простою. Вона передбачає множення кожного розряду числа на число, що є основою системи числення, в степені, яка відповідає номеру розряду. При цьому номери розрядів починаються з нуля і збільшуються від молодшого до старшого розрядів. Якщо ж число має фіксовану кому, то переведення відбувається аналогічно, тільки номера розрядів дробової частини необхідно вважати від’ємними, такими, що починаються з мінус одиниці, і зменшуються від старшого до молодшого розрядів. Враховуючи наведені правила можна здійснити переведення чисел А та B в десяткову систему числення.

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

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

Саме бінарний код, який було отримано в результаті останніх дій, є базовим для всіх обчислень та операцій в ЕОМ. Що ж на рахунок представлень чисел в шістнадцятковому, десятковому та вісімковому форматах, то вони використовуються лише для реалізації взаємодії з людиною, адже останній простіше сприймати числа саме в цих форматах.

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

Для виконання наступних дій потрібно утворити із вихідних чисел А та Б двійкові числа з нульовим старшим бітом. Це виконується з огляду на те, що старший біт вважається знаковим(відокремлюється від решти бітів знаком крапки), тобто таким, що визначає від’ємне число чи додатне. При цьому рівність старшого біту нулю вказує, що число є додатнім, а рівність його одиниці вказує, що число від’ємне.

Число А не потребує змін, оскільки його старший біт рівний нулю, а число B варто змінити наступним чином:

В результаті виконаних операцій числа A та B будуть додатними та представленими у прямому коді. Представлення у прямому коді є зручним для виконання операцій додавання двійкових чисел, але для віднімання часто зручніше користуватися так званим додатковим кодом. Додатковий код утворюється шляхом інвертування бітів прямого коду (всіх окрім старшого) та додаванням до одержаного результату одиниці. Числа (-А) та (-В), подані в двійковому додатному коді, показані далі.

Додавання в двійковій(шістнадцятковій) системі числення виконується аналогічно додаванню в десятковій. Тобто ця операція виконується порозрядно і якщо сума якихось двох розрядів перевищує основу системи числення чи рівна їй, то відбувається перенесення одиниці в старший розряд. Операція додавання чисел А та В (A+B) показана на рисунку 4.1.

+

0010

1111

1101

0001

1110

0101

1011

1101

0001

0011

1000

0001

1001

1100

1111

0010

0100

0011

0101

0011

1000

0010

1010

1111

Рисунок 4.1 – Додавання чисел А та В у двійковому коді

Аналогічно відбувається додавання чисел і в шістнадцятко вій системі (рисунок 4.2).

+

2

F

D

1

E

5

B

D

1

3

8

1

9

C

F

2

4

3

5

3

8

2

A

F

Рисунок 4.2 – Додавання чисел А та В у шістнадцятковому коді

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

Отже, отриманий результат збігається із дійсним значенням.

Для виконання операції віднімання (А-В) потрібно використати додатковий код числа (-В) і замінити операцію віднімання на операцію додавання (А-В=А+(-В)). Адже саме таким чином відбувається виконання команд процесором – він не виконує операції віднімання, множення чи ділення, ці операції заміняються на додавання та зсуви різних типів. Таким чином, вище вказана операція віднімання представлена на рисунку 4.3.

+

0010

1111

1101

0001

1110

0101

1011

1101

1110

1100

0111

1110

0110

0011

0000

1110

0001

1100

0101

0000

0100

1000

1100

1011

а)

+

2

F

D

1

E

5

B

D

E

C

7

E

6

3

0

E

1

C

5

0

4

8

C

B

б)

Рисунок 4.3 – Виконання операції (А+(-В)) а) в двійковому коді, б) в шістнадцятковому коді

В обох випадках до уваги потрібно брати тільки 4 байта результату, адже переповнення розрядної сітки неможливе з огляду на відмінність знаків доданків. Також можна стверджувати про правильність розрахунків, адже:

Для виконання операції (В-А) варто замінити віднімання на додавання, як і в попередньому випадку. Тільки в даному варіанті в додатковому коді потрібно записати число (-А), а дане В – в прямому коді. Як наслідок – виконання вказаної операція буде таким, як це показано на рисунку 4.4.

+

1101

0000

0010

1110

0001

1010

0100

0011

0001

0011

1000

0001

1001

1100

1111

0010

1110

0011

1010

1111

1011

0111

0011

0101

а)

+

D

0

2

E

1

A

4

3

1

3

8

1

9

C

F

2

E

3

A

F

B

7

3

5

б)

Рисунок 4.4 – Виконання операції (-А+В) а) в двійковому коді, б) в шістнадцятковому коді

Результатом операції є від’ємне число, адже знаковий розряд рівний одиниці. До того ж результат є числом в додатковому коді. Правильність виконання легко побачити, про інвертувавши всі розряди, окрім знакового, знайденого числа та додавши одиницю. Після виконання вказаних операцій буде очевидною рівність (А-В)=-(-А+В).

Для виконання операції (-А-В) обидва числа потрібно представити в додаткових кодах та додати між собою, що і показано на рисунку 4.5.

+

1101

0000

0010

1110

0001

1010

0100

0011

1110

1100

0111

1110

0110

0011

0000

1110

1011

1100

1010

1100

0111

1101

0101

0001

а)

+

D

0

2

E

1

A

4

3

E

C

7

E

6

3

0

E

B

C

A

C

7

D

5

1

б)

Рисунок 4.5 – Виконання операції (-А-В) а) в двійковому коді, б) в шістнадцятковому коді

Отриманий результат віднімання є вірним, оскільки код результату є додатковим кодом результату операції -(А+В).

Характерною ознакою виконаних операцій додавання(віднімання) двійкових(шістнадцяткових) чисел є те, що в жодній з операцій не відбулося переповнення розрядної сітки. Переповнення розрядної сітки відбувається, коли результат операції є надто великим, щоб бути відображеним наявною кількістю розрядів . В нашому випадку можна було представити лише числа в діапазоні FFFF FFFF…07FF FFFF(-2 147 483 648…2 147 483 647). Переповнення може відбутися тільки при виконанні додавання чисел з однаковими знаками(у випадку операцій між двома операндами), тому характерною його ознакою є зміна значення знакового розряду на протилежне.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]