Цілі типи

 

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

Цілі знакові типи. Для представлення в пам'яті даних цих типів відомі такі способи: у вигляді знака і значення та у вигляді додаткового коду.

1) Метод знака і значення був використаний у ряді комп'ютерів. Для знака виділяється перший (або самий лівий) біт двійкового числа, потім записується саме число. Наприклад, +10 і – 15 у двійковому вигляді в одному байті можна представити так, як показано в табл. 2.1.

Таблиця 2.1

Представлення цілих чисел із знаком

Число Знаковий біт Величина (7 бітів)
+ 10 – 15

 

За згодою 0 використовується для представлення знака плюс і 1 – для мінуса. Таке представлення зручне для програмістів, тому що легко сприймається; але не є економічним, оскільки при виконанні операцій додавання і віднімання необхідно спочатку визначати знак кожного числа. Наприклад, додавання + 6 + (– 7) насправді є операцією вiднiмання, а вiднiмання (+ 6) – (– 7) – операцію додавання.

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

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

а) модуль негативного числа записати в прямому коді, у не використовувані старші біти записати нулі;

б) сформувати зворотний код числа, для цього нуль замінити одиницею, а одиницю замінити нулем;

в) до зворотного коду числа додати одиницю.

Для позитивних чисел прямий, зворотний і додатковий коди однакові. Так представляються цілі числа в PASCAL у форматах shortіnt, іnteger, longіnt, comp, а в мові С в форматах іnt, short іnt, long іnt.

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

20 + 21 + 22 + ... + 2n – 1 або .

При n-бітовому збереженні числа в додатковому коді перший біт виражає знак цілого числа. Тому позитивні числа представляються в діапазоні від 0 до 1*20 + 1*21 +...+ 1*2n– 2 чи, що теж саме, від 0 до 2n– 1 – 1.

Всі інші конфігурації бітів виражають негативні числа в діапазоні від – 2n– 1 до – 1. Таким чином, можна сказати, що число N може зберігатися в n розрядах пам'яті, якщо його значення знаходиться в діапазоні:

– 2n– 1 ≤ N ≤ 2n– 1 – 1.

Іншими словами, діапазон можливих значень цілих типів залежить від їхнього внутрішнього представлення, що може займати 1, 2, 4 чи 8 байтів. У таблиці 2.2 наводиться перелік цілих типів, розмір пам'яті для їхнього внутрішнього представлення в бітах, діапазон можливих значень; у таблиці 2.3 – реалізація даних типів у PASCAL і C.

Таблиця 2.2

Характеристика цілих типів

Розмір, біт Діапазон чисел
беззнакові зі знаком
8 (1 байт) 16 (2 байти) 32 (4 байти)   64 (8 байтів) 0 … 255 (0 … 28 – 1) 0 … 65535 (0 … 216 – 1) 0 .. 4294967295 (0 … 232 – 1) немає – 128 ... 127 (– 27 … 27 – 1) – 32768 ... 32767 (– 215 … 215 – 1) – 2147483648 … 2147483647 або (– 231 … 231 – 1) (– 263 … 263 – 1)

 

Таблиця 2.3

Реалізація типів у мовах програмування

Розмiр, бiт PASCAL С
8 без знака 16 без знака 32 без знака 8 iз знаком 16 iз знаком 32 iз знаком 64 iз знаком byte word немає shortint integer longint comp unsigned short int unsigned int unsigned int (для 32-них ПК), unsigned long int int short int int (для 32-них ПК), long int

 

При цьому нумерація розрядів у двійковому представленні цілих чисел для випадку 4-х байтів така, як наведено на рис 2.1.

 

            s  

7 … 0 15 … 8 23 … 16 31 32 … 24

Рис. 2.1. Розподіл розрядів у представленні цілого числа

 

Тут s – знаковий розряд числа. Взагалі, знаковий розряд завжди знаходиться у старшому розряді самого старшого байта.