- •Конспект лекцій ( частина і ) з дисципліни
- •1. Поняття інформації та основні форми її подання
- •2. Представлення даних в пам’яті комп'ютера
- •3. Класифікація типів даних
- •4. Базові типи даних
- •4.1. Порожній тип
- •4.2. Логічний тип даних
- •4.3. Символьні типи даних
- •4.4. Цілочисельні типи даних
- •4.5. Дійсні типи даних
- •5. Похідні типи даних
- •5.1. Переліки
- •5.2. Вказівники
- •5.3. Посилання
- •5.4. Масиви
- •5.5. Структури
- •5.6. Бітові поля
- •5.7. Об'єднання
- •6. Перетворення типів
- •6.1. Неявне перетворення типів
- •6.1.1. Арифметичне перетворення типів
- •6.1.2. Перетворення типів при присвоюванні
- •6.2. Явне перетворення типів
- •6.3. Застаріла форма явного перетворення
- •Список літератури
- •1. Поняття інформації та основні форми її подання ------------------------------------------- 3
- •Основи представлення данних в пам'яті комп'ютера
- •6.050102 “Комп’ютерна інженерія
4.4. Цілочисельні типи даних
Типи short, іnt і long призначені для представлення цілих чисел.
Цілі типи можуть бути знаковими (sіgned) і беззнаковими (unsіgned). В знакових типах самий лівий біт використовується для зберігання знака числа (0 – плюс, 1 – мінус). Решта бітів містять числове значення. В беззнакових типах всі біти використаються для числового значення. За замовчуванням всі цілочисельні типи вважаються знаковими.
Цілі типи розрізняються діапазоном значень, які можуть приймати цілочисельні змінні і розміром області пам'яті, виділеної під цю змінну, а конкретні розміри перерахованих типів залежать від конкретної реалізації. Так, представлення в пам'яті і область значень для типів іnt і unsіgned іnt чітко не визначені в мові С++. За замовчуванням розмір іnt (зі знаком і без знака) відповідає реальному розміру цілого на даній машині. Наприклад, на 16-ти розрядній машині тип іnt завжди займає 16 розрядів або 2 байта. На 32-х розрядній машині тип іnt завжди займає 32 розряди або 4 байта. Таким чином, тип іnt буде еквівалентним типам short іnt або long іnt залежно від реалізації. Аналогічно, тип unsіgned іnt еквівалентний типам unsіgned short або unsіgned long. Перелік типів наведено в Таблиці 2.6.
Оскільки, розміри типів іnt і unsіgned іnt є змінними, то програми, що залежать від специфіки розмірів іnt і unsіgned іnt можуть бути непереносними. Переносимість коду можна поліпшити шляхом включення у вираз sіzeof операції.
Таблиця 4.6
|
Тип |
Розмір пам'яті в байтах 16 (32) |
Діапазон значень |
|
[signed] short [int] |
2 |
-215 .. 215-1 = -32768 .. 32767 |
|
unsigned short [int] |
2 |
0 .. 216-1 = 0 .. 65535 |
|
[signed] int |
2 (4) |
-215 .. 215-1 (-231 .. 231-1) |
|
unsigned [int] |
2 (4) |
0 .. 216-1 (0 .. 232-1) |
|
[signed] long [int] |
4 |
-231 .. 231-1 = -2 147 483 648 .. 2 147 483 647 |
|
unsigned long [int] |
4 |
0 .. 232-1 = 0 .. 4 294 967 295 |
Літерали цілих типів можна записати в десятковому, вісімковому або шістнадцятковому видах, наприклад: 20 (десяткове), 024 (вісімкове), 0х14 (шістнадцяткове). Якщо літерал починається з 0, він трактується як вісімковий, якщо з 0х або 0Х, то як шістнадцятковий. Звичний запис розглядається як десяткове число. За замовчуванням всі цілі літерали мають тип sіgned іnt. Можна явно визначити цілий літерал, що має тип long, приписавши в кінці числа букву L (використається як прописна L, так і рядкова l, однак для зручності читання не слід вживати рядкову: її легко переплутати з 1). Буква U (або u) в кінці числа визначає літерал як unsіgned іnt, а дві букви – UL або LU – як тип unsіgned long. Наприклад: 25u, 1015UL, 2L, 7Lu
Записи вісімкової і шістнадцяткової констант можуть завершуватися буквою L (для вказівки на тип long) і U (якщо потрібно показати, що константа беззнакова). Наприклад, константа 0XFUL має значення 15 і тип unsigned long.
Внутрішнє представлення змінної цілого типу — ціле число у двійковому коді. Згідно формату IEEE всі додатні цілі числа зберігаються в пам'яті комп'ютера в прямому коді, а всі від'ємні – в доповняльному коді. Цілі числа зберігаються в пам'яті комп'ютера у зворотньому порядку розміщення байт числа.
Приклад 3.
Додатнє число 25 типу int
в пам'яті комп’ютера зберігається в
прямому двійковому коді і займає 4 байти:
0000 0000 0000 0000 0000 0000 0001 1001
В пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа:
0001 10001 0000 0000 0000 0000 0000 0000
Результат в 16-ковій системі числення: 19 00 00 00.
Приклад 4.
Від'ємне число -3500 типу long int в пам'яті комп’ютера зберігається в доповняльному двійковому коді і займає 4 байти: - 350010 = - DAC16 = - 1101 1010 11002
0000 0000 0000 0000 0000 1101 1010 1100 - прямий код;
1111 1111 1111 1111 1111 0010 0101 0011 - обернений код;
+ 1
1111 1111 1111 1111 1111 0010 0101 0100 - доповняльний код;
F F F F F 2 5 4 - в 16- ковій системі числення
В пам’яті комп’ютера зберігається у зворотному порядку розміщення байт числа:
0101 0100 1111 0010 1111 1111 1111 1111
Результат в 16- ковій системі числення: 54 F2 FF FF.
