Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 лаба з програмування.doc
Скачиваний:
8
Добавлен:
06.11.2018
Размер:
223.74 Кб
Скачать

Цілочисельні типи даних

Типи 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;

}