
- •До лабораторної роботи № 1 з дисципліни
- •6.050102 “Комп’ютерна інженерія”
- •1. Мета роботи
- •2. Теоретичні відомості
- •Цілочисельні типи даних
- •Дійсні типи даних
- •3. Порядок виконання роботи
- •4. Завдання на лабораторну роботу
- •5. Вимоги до оформлення звіту
- •Мета роботи.
- •6. Контрольні завдання
- •2. Знайти та записати внутрішні формати типів даних:
- •Список літератури
- •Мета роботи……………………………………..……………………………………………3
- •Теоретичні відомості..........….………………………………………………………….…. .3
- •Методичні вказівки
- •"Представлення в пам’яті комп’ютера цілих та дійсних типів даних"
- •6.050102 “Комп’ютерна інженерія
Цілочисельні типи даних
Типи 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 всі додатні цілі числа зберігаються в пам'яті комп'ютера в прямому коді, а всі від'ємні – в доповняльному коді. Цілі числа зберігаються в пам'яті комп'ютера у зворотньому порядку розміщення байт числа.
Приклад 1
Додатнє число 25 типу int
в пам'яті комп’ютера зберігається в
прямому двійковому коді і займає 4 байти:
0000 0000 0000 0000 0000 0000 0001 1001
В пам’яті комп’ютера цілі числа зберігаються у зворотному порядку розміщення байт числа:
0001 10001 0000 0000 0000 0000 0000 0000
Результат в 16-ковій системі числення: 19 00 00 00.
Приклад 2.
Від'ємне число -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.
У наведеній нижче програмі показано приклад дослідження представлення в пам'яті комп'ютера змінної х типу int:
#include<stdio.h>
#include<conio.h>
//using namespace std;
int main (void)
{
int x=1;
unsigned char *vx=(unsigned char *)(&x);
for (int i=0;i<sizeof(x);i++)
printf("%02X ",vx[i]);
printf("\n");
getch();
return 0;
}