Главная страница

 

ДОМ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программирование
Информационные технологии
Компьютерные сети
Информационная безопасность
Как заработать в сети Интернет
Информационные технологии
CASE-технологии
Программные средства
Низкоуровневое программирование
Модели данных
Структуры данных
Низкоуровневое программирование

АРИФМЕТИЧНІ ТА ЛОГІЧНІ ОСНОВИ ПРОГРАМУВАННЯ

 

Поняття системи числення

Ми звикли вести рахунок десятками (10 одиниць утворює десятку, 10 десятків - сотню і т.д.), тобто вести рахунок у десятковій системі числення. Рахувати можна не тільки десятками. Існують і інші системи числення.

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

Розрізняють позиційні й непозиційні системи числення.

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

У римській системі числення: I - 1, V - 5, X - 10 і т. д.

В одиничній системі числення число сім представляється сімома одиничками: (7)10 = (1111111)1

Недоліками непозиційних систем числення є:

*      громіздкість зображення чисел;

*      труднощі у виконанні операцій.

Наочність зображення чисел і відносна простота виконання операцій характерні для позиційних систем числення.

Система числення називається позиційною, якщо при записуванні числа одна і таж цифра має різне значення, яке визначається місцем (позицією), на якому вона знаходиться.

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

Араби взяли за основу число 10, тому що в якості обчислювального пристрою вони використовували 10 пальців рук. В десятковій системі числення для записування числа використовується десять цифр 0,1,2,3,4,5,6,7,8,9 і основою є число 10. Число у десятковій системі числення можна представити у вигляді полінома (у вигляді степенів десяти):

(327)10 = 3·102+2·101 + 7·100
(33,3)10 = 3·101 + 3·100 + 3·10-1

Системи числення, які використовуються в комп'ютерах

Система числення з основою N=2 є позиційною системою числення і нічим не відрізняється від позиційної система числення з будь-якою основою.. Але для комп'ютера ця система числення має вагомі переваги, які полягають у тому, що її алфавіт має всього два символи. Для фіксації цих символів достатньо мати деякий пристрій, що може мати два суттєво різних і стійких стани.

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

Приклади:

(5)10 = (101)2 = 1·22 + 0·21 + 1·20
(15)10 = (1111)2 = 1·23 + 1·22 + 1·21 + 1·20

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

У вісімковій системі числення в якості цифр використовують символи: 0, 1, 2, 3, 4, 5, 6, 7. В шістнадцятковій системі потрібно 16 символів, в якості яких використовують арабські цифри і п'ять букв латинського алфавіту, що утворюють послідовність (із врахуванням ваги шістнадцяткових цифр): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, C, D, E, F.

Приклади:

(75,67)8 = 7·81 + 5·80 + 6·8-1 + 7·8-2
(1FC,B)16 = 1·162 + 15·161 + 12·160 + 11·16-1

Десяткові еквіваленти символів A, B, C, D, E, F:

A = 10, B = 11, C = 12, D = 13, E = 14, F = 15

Переведення чисел із десяткової системи числення у будь-яку іншу

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

Приклад: (24)10 = (?)2

(24)10 = (11000)2

Приклад: (143)10 = (?)8

(143)10 = (217)8

Приклад: (687)10 = (?)16

(687)10 = (2AF)16

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

Приклад:
( 0,125 )10 = ( ? )2;
( 0,125 )10 = ( ? )8;
( 0,125 )10 = ( ? )16.


( 0,125 )10 = (0,001)2;
( 0,125 )10 = (0,1)8;
( 0,125 )10 = (0,2)16.

Приклад: (0,365)10 = (?)16

(0,365)10 = (0,5D)16

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

Переведення чисел із будь-якої системи числення в десяткову

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

Приклад:

Приклад:

Приклад:

Переведення чисел із двійкової системи числення у вісімкову, із двійкової у шістнадцяткову і навпаки

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

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

Приклад: (111001,011000)2 = (71,30)8

Таблиця 1

Вісімкова цифра

Тріада у коді 4-2-1

0

000

1

001

2

010

3

011

4

100

5

101

6

110

7

111

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

Приклад:

(57,371)8 = (1011111,011111001)2

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

Таблиця 2

Шістнадцяткова цифра

Тетрада у коді 8-4-2-1

0

0000

1

0001

2

0010

3

0011

4

0100

5

0101

6

0110

7

0111

8

1000

9

1001

A

1010

B

1011

C

1100

D

1101

E

1110

F

1111

 

Приклади:

(5F,1)16 = (01011111,0001)2
(000010110001,1101)2 = (0B1,C)16

Організація оперативної пам'яті ЕОМ

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

Числа представляються у двійковій системі числення.

З метою стандартизації в ЕОМ використовують американський стандартний код для обміну інформацією ASC II ("аскі" код). Восьмибітний розширений ASC II забезпечує представлення 256 символів, включаючи символи для національного алфавіту (28 = 256).

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

Умовне зображення байта й порядок нумерації його елементів:

7

6

5

4

3

2

1

0

Кількість біт у комірці пам'яті визначає її довжиною.

Оперативна пам'ять ЕОМ представляє собою сукупність базових комірок, кожна з яких має свій порядковий номер, починаючи з нуля. Кількість базових комірок ОП прийнято робити кратним величині 1024 байта (1 Кбайт).

Базова комірка має довжину у вісім біт. Якщо в ній зберігаються цілі числа, то у двійковій системі числення туди можна розмістити число не більше 255 (у шістнадцятковій системі числення - FF). Звичайно, довжина комірки для зберігання даних повинна бути більшою ніж один байт. Виникає необхідність формування з базових комірок більш довгі, хоча інколи необхідно й більш короткі, аж до одного біта.

Встановлено типові комірки, що складаються з базових:

*      слово - містить два байти;

*      подвійне слово - містить чотири байти;

*      четвірне слово - містить вісім байт.

В особливих випадках використовують типові комірки, що містять шістнадцять байт.

Правило записування слова в оперативну пам'ять:
Слово займає дві комірки оперативної пам'яті. Молодший байт записується за молодшою адресою, а старший байт за старшою адресою.

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

1010 1111

1100 1001

старший байт

молодший байт

 

Його шістнадцяткове представлення має вигляд:

A F

C 9

старший байт

молодший байт

Символ h у записі AFC9h означає, що це є шістнадцяткове представлення двійкового коду.

Мікропроцесор при звертанні до комірки оперативної памўяті формує її адресу. Адресою типової комірки є адреса молодшого байта.

На рис. 1 схематично показано розміщення слова AFC9h в базових комірках оперативної пам'яті.

Адреса комірки

Вміст комірки

0

...

...

...

A

C9

A+1

AF

...

...

Рисунок 1

Форми представлення чисел в ЕОМ

В ЕОМ числа можуть бути представленими у двійковій та двійково-десятковій системах числення.

Зокрема, в ЕОМ є дві форми представлення чисел у двійковій системі числення:

  1. У вигляді цілих чисел із знаком та без знаку (кома фіксується після останнього розряду). У цілому числі із знаком одиничне значення найстаршого біта (знак) є ознакою від'ємного числа, яке зберігається у доповняльному коді.
  1. У вигляді числа з плаваючою комою (дійсні числа). N = M·10P, наприклад: -5·105
    Тут М - мантиса числа, Р - порядок числа.

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

Для прискорення виконання операцій (програми) з дійсними числами існує спеціальний пристрій - сопроцесор.

Сопроцесор - це пристрій. призначений спеціально для роботи з дійсними числами.

У комп'ютера нижче 486-го сопроцесор може входити, а може і не входити до складу апаратної частини. У 486-го і вище комп'ютера сопроцесор обов'язково входить до складу апаратної частини.

 

Двійково-десяткова форма представлення чисел

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

Код цифри у байті складається з двох частин: ХХХХ 0101

Значення першої тетради "ХХХХ" несуттєве (краще записати нулі). Друга тетрада "0101" - це двіковий код цифри 5 (десяткова цифра заміняється на двійкову тетраду)

Приклад:

Число +573 у даному форматі матиме вигляд:

0000 0101

0000 0111

0000 0011

5

7

3

 

Число -573 у даному форматі матиме вигляд:

1011 0101

0000 0111

0000 0011

- 5

7

3

При кодуванні числа -573 перша тетрада "1011" - код знака мінус

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

Число -573 буде мати такий двійково-десятковий код в упакованому форматі:

1011

0101

0111

0011

-

5

7

3

Приклад: (356)10 = (0011 0101 0110)2-10

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

Приклад: Запишіть десяткове число 1982 у неупакованому та упакованому форматах. Запишіть це число в двійковій системі числення.

Неупакований формат:

0000 0001

0000 1001

0000 1000

0000 0010

1

9

8

2

 

Упакований формат:

0001

1001

1000

0011

1

9

8

2

У двійковій системі числення: 11110111101

Кодування чисел

В ЕОМ кількість двійкових розрядів для записування зокрема цілих чисел фіксована і звичайно дорівнює 8, 16, 32 і називається розрядною сіткою комп'ютера.

У перших ПК була 8-розрядна сітка. Більшість сучасних ПК мають 32-розрядну сітку. Досить рідко зустрічаються комп'ютери з 16-розрядною сіткою.

Приклад: 8-розрядної сітки, у яку записано двійковий код числа (+23)10:

7

6

5

4

3

2

1

0

 

0

0

0

1

0

1

1

1

 

біт знаку

64

32

16

8

4

2

1

де, 0-6 - цифррові розряди із вказівкою ваги кожного з них,
а 7-й біт - це біт знаку (1 - для від'ємного числа; 0 - для додатнього числа).

Приклад: 16-розрядної сітки, у яку записано двійковий код числа (+23)10:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

0

0

0

0

0

0

0

0

0

0

0

1

0

1

1

1

де, 0-14 - цифррові розряди, а 15-й біт - це біт знаку.

Від'ємні числа зберігаються у пам'яті у доповняльному коді, а додатні - у прямому.

Прямий код числа - це двійкове зображення його абсолютного значення із закодованим знаком.

Обернений код числа отримують шляхом інверсії цифрових розрядів.

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

Приклад: Представити у 8-розрядній сітці число (-35)10 у прямому, оберненому та доповняльному кодах.

Прямий код:

10100011

Обернений код:

11011100

Доповнняльний код:

11011101

Переповненням розрядної сітки називають момент, коли результат не вмістився у розрядну сітку.

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

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

Приклади:

(6)8+(6)8=(14)8
(6)10+(6)10=(12)10
(6)16+(6)16=(C)16

 

Двійкова арифметика:

0 + 0 = 0

 

1 + 0 = 1

 

1 + 1 = 0

і перенос одиниці у сусідній старший розряд

1 + 1 + 1 = 1

і перенос одиниці у сусідній старший розряд

Приклади:

Двійкова арифметика в комп'ютерах

В ЕОМ операції віднімання, множення, ділення здійснюються за допомогою операції додавання. Наприклад, при відніманні від'ємник записується у доповняльному коді і віднімання заміняється додаванням.

Приклад: 23 + 22 = 45

<>

Приклад: 23 - 13 = 23 + (-13 ) = 10

(-13)10 = (1 0001101)пр. = (1 1110010)об. = (1 1110011)доп.

Приклад: 7 - 13 = 7 + (-13) = -6

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

  1. відняти від доповняльного кода 1: 11111010доп. - 00000001 = 11111001об.
  1. проінвертувати обернений код для переходу до прямого: 10000110пр.

Приклад: (- 7 - 13) = (-7) +(-13) = -20

(-7)10

Прямий код:

1 0000111

Обернений код:

1 1111000

Доповнняльний код:

1 1111001

(-13)10

Прямий код:

1 0001101

Обернений код:

1 1110010

Доповнняльний код:

1 1110011

1 0010100пр. - прямий двійковий код числа ( -20 )10

Контрольні запитання і задачі

  1. Для чого в комп'ютерах використовується шістнадцяткова система числення?
  2. Переведіть число (35,62)10 з десяткової системи числення у двійкову.
  3. Здійсніть переведення числа (1F,C)16 із шістнадцяткової системи числення у десяткову?
  4. Запишіть шістнадцяткове число 3F0A у двійкову систему числення.
  5. Замініть двійковий код 111110000111101101 шістнадцятковим числом.
  6. Яким чином в ЕОМ кодуються числа й символи?
  7. Що є вихідною одиницею інформації?
  8. Що називають базовою коміркою оперативної пам'яті?
  9. Які комірки називаються типовими?
  10. Сформулюйте правило записування машинного слова в оперативну пам'ять.
  11. Що є адресою типової комірки пам'яті?
  12. У чому полягає суть представлення чисел у двійково-десятковій формі?
  13. Що називають розрядною сіткою комп'ютера?
  14. Запишіть число (-49)10 у восьми розрядну сітку.
  15. Запишіть число (+1395)10 у шістнадцяти розрядну сітку.
  16. З якою метою в комп'ютерах використовують доповняльний код?
  17. У шістнадцяти розрядну сітку записано число FF0C. В якому коді і з яким знаком представлено число?
Copyright © Eugene, 2007
e-mail: webmaster@ITDom.info
Rambler's Top100 Рейтинг@Mail.ru