Типи
даних
У комп'ютері
всі дані представленні у вигляді
двійкових послідовностей. Це зроблено
через легкість їх збереження у пам'яті.
Вся пам'ять представлена у вигляді
конденсаторів: якщо він не заряджений
це рівносильно 0, а якщо заряджений —
1. Знати двійкову систему числення
обов'язково для професійного програмування.
Найменше об'єм інформації — біт, але
для полегшення у мовах програмування
вважають найменшим значенням — байт.
Байт — це 8 біт.
А тепер
про типи в C++. Їх поділяють
на категорії:
1. Цілі
Цілі
числа, які не мають дробової частини.
Вони всі мають однакові дії. Відмінний
в них тільки розмір, тобто кількість
байтів, які вони займають в пам'яті.
Найменший тип short
має розмір 2 байт. Далі
int – 4 байта і long
– 8 байт. По правилам
комбінаторики можна порахувати
їхнє найбільше та найменше значення. У
нас двійкова система числення, отже
формула буде така: 2^n, де
n — к-сть біт. Перший
(старший біт) є знаком числа: 0 — додатнє,
1 — від'ємне, число 0 вважається додатнім.
Отже, для short
маємо 2^15
= 32768 і
оскільки ми рахуємо від 0, то максимальне
значення буде 32767, а
мінімальне -32768. Не важко
порахувати і для всіх інших типів. Це
буде домашнє завдання! Часто виникають
ситуації коли нам непотрібні від'ємні
числа і для того щоб економити пам'ять
придумали приставку для цілих типів
unsigned, що в переводі означає
беззнаковий. Тобто для unsigned
short максимальне
значення буде 2^16
= 65536-1 = 65535
(один віднімаємо тому що рахуємо з 0).
Для всіх типів з unsigned мінімальне
значення — 0. Також можна ще писати
signed, але це не обов'язково
тому що задається автоматично (воно
означає знаковий). У других мовах
програмування всі цілі типи є знаковими
і unsigned не допускається.
2. Дійсні
До дійсних
належать float та double.
Double у 2 рази більший. У пам'яті
представляється мантисою і порядком,
старший біт також є знаковим. Для них
немає unsigned. Float
має значення [3.4*10^-38
.. 3.4*10^38], double [1.7*10^-308 .. 1.7*10^308]. У пам'яті
float – 4 байта, double
– 8 байт. Є ще long double: займає
10 байт та має значення [3.4*10^-4932
.. 3.4*10^4932].
3. Символьні
До
символьних відносяться:
char
— тип що має 256 значень символів та
займає 1 байт у пам'яті, приймає значення
символів таблиці ASCII перші
128 символів у всіх системах однакові а
інші 128 залежать від локалізації системи.
wchar_t —
займає 2 байта, отже може приймати 65536
значень. Приймає символи в кодування
unicode. У unicode перші
256 значень збігаються з таблицею ASCII.
4. Логічний
тип bool
Цей
тип приймає 2 значення true та
false (істина та брехня). Незважаючи
на кількість можливих значень займає
1 байт у пам'яті, тому що мінімальна
одиниця байт, хоча достатньо одного
біта. Для економії пам'яті використовують
бітові шкали, але про це пізніше. У декого
може виникнути питання для чого економити
пам'ять якщо її так достатньо. Так, але
при передачі через інтернет, особливо
коли він дуже повільний, це відіграє
важливу роль, але також несуттєво, тому
що інтернет розвивається і зараз важко
знайти повільне з'єднання.
Ніби про
типи все. Пам'ятайте вибір типу дуже
важливий. Наприклад, у олімпіадах з
програмування часто задають максимальне
значення і тому потрібно пам'ятати
максимальне та мінімальне значення
кожного типу.
Тепер
можна сказати про змінні. Змінна — це
комірка у пам'яті і скільки вона в ній
займає залежить від типу, можна вважати,
що тип це правило вибору даних з пам'яті.
Можна об'явити змінну і вказати значення
не числом а адресом у пам'яті і по правилам
типу воно вибере необхідні дані для
змінної. Але це не рекомендується робити,
тому що у деяких операційних системах
дуже жорсткий контроль пам'яті і якщо
программа полізе не у свою пам'ять то
ОС може без попередження завершити її.
У windows цього немає і тому
під нього є віруси. У linux є
жорсткий контроль і тому немає вірусів.
До речі програми для набору ресурсів в
іграх, такі як ArtMoney, працюють
по такому принципу, що залазять у пам'ять
іншої програми і змінюють у ній дані.
На цьому
урок завершений. Прошу писати відгуки
у коментарях про цю статтю.
Дякую! Дуже корисно =)
ВідповістиВидалити