Ціле (тип даних) Вікіпедія

Ціле,цілочисленний тип даних(англ. Integer), в інформатиці - один з найпростіших і найпоширеніших типів даних у мовах програмування. Служить для подання цілих чисел.

Безліч чисел цього типу є кінцевим підмножиною нескінченної множини цілих чисел, обмежена максимальним і мінімальним значеннями.

У програмуванні розрізняють беззнакові цілі числа та цілі зі знаком. Знак числа зазвичай кодується старшим бітом машинного слова. Традиційно, якщо старший біт дорівнює 1, то число вважається негативним, тільки якщо воно не визначено як беззнакове.

Кількість чисел у машинному зображенні безлічі цілих чисел залежить від довжини машинного слова, що зазвичай виражається в бітах. Наприклад, при довжині машинного слова 1 байт (8 біт) діапазон уявних цілих чисел зі знаком від -128 до 127. У беззнаковому форматі байтове уявлення числа буде від 0 до 255 (2 8 - 1). Якщо використовується 32-розрядне машинне слово, то ціле зі знаком представлятиме значення від −2 147 483 648 (-2 31 ) до 2 147 483 647 (2 31 −1); всього 1 0000 000016 (4294967 29610) можливих значень.

Обмеження довжини машинного слова, обумовлене конкретної апаратної реалізацією тієї чи іншої комп'ютера, не перешкода для обробки ними дуже довгих у бітах уявлень цілих чисел, що досягається ускладненням програмних алгоритмів. Природне обмеження - кінцівка ємності пам'яті та розумний час виконання.

У пам'яті типової комп'ютерної системи ціле число представлене у вигляді ланцюжка біт фіксованого (кратного 8) розміру. Ця послідовність нулів і одиниць — нічим іншим, як двійковий запис числа, оскільки зазвичай представлення чисел у сучаснійкомп'ютерної техніки використовується позиційний двійковий код. Діапазон цілих чисел зазвичай визначається кількістю байтів у пам'яті комп'ютера, що відводяться під одну змінну.

Багато мов програмування пропонують вибір міжкороткими(англ. short),довгими(англ. long) і цілими стандартної довжини. Довжина стандартногоцілого типу, як правило, збігається з розміром машинного слова на цільовій платформі. Для 16-розрядних операційних систем - цей тип (int) складає 2 байти і збігається з типом short int (можна використовувати як short, опускаючи слово int), для 32-розрядних операційних систем він дорівнює 4 байтам і збігається з довгим цілим long int (можна використовувати як long, опускаючи слово int), і в цьому випадку становитиме 4 байти. Коротке ціле short int, для 16-розрядних операційних систем, 32-розрядних операційних систем, і для більшості 64-розрядних операційних систем складає 2 байти. Також у деяких мовах може використовуватися тип даних подвійне довге long long, що становить 8 байт.

Для 64-розрядних операційних систем, враховуючи різницю моделей даних (LP64, LLP64, ILP64), подання цілого типу на різних моделях даних може відрізнятися між собою. Тип int і long може становити як 4, і 8 байт.

Варто відзначити, що кожна мова програмування реалізує свою сигнатуру подання цілих чисел, яка може відрізнятися від міжнародних стандартів, але зобов'язана її підтримувати. Наприклад можна віднести крос-платформну бібліотеку Qt, де все є типом qintX і quintX, де X-8,16,32,64.

Цілі типи поділяються набеззнакові(англ. unsigned) ізнакові(англ. signed).

Беззнакові цілі

Беззнакові цілі представляють лишеневід'ємні числа, у своїй все розряди коду використовуються уявлення значення числа і максимальне число відповідає одиничним значенням коду переважають у всіх розрядах: 111…111. m-байтова змінна цілого типу без знака, очевидно, набуває значень від 0 до +2 8m −1.

Іноді в літературі [1] зустрічаються рекомендації не використовувати тип беззнакові цілі, оскільки він може бути не реалізований процесором комп'ютера, проте навряд чи цю пораду слід вважати актуальною - більшість сучасних процесорів (у тому числі x86-сумісні [2] ) однаково добре працюють як зі знаковими, і з беззнаковими цілими.

У деяких мовах, наприклад, Java, беззнакові цілі типи (за винятком символьного) відсутні [3] .

Неправильне використання беззнакових цілих може призводити до неочевидних помилок через переповнення, що виникає [4] . У наведеному нижче прикладі використання беззнакових цілих у циклі C і C++ перетворює цей цикл на нескінченний:

Цілі зі знаком

Існує кілька різних способів подання цілих значень у двійковому коді у вигляді величини зі знаком (англ.) українців. . Зокрема можна назвати прямий та зворотний коди. Знак кодується старшому розряді числа: 0 відповідає позитивним, а 1 негативним числам.

Можуть бути використані і екзотичніші уявлення негативних чисел, такі, як, наприклад, система числення на підставі −2. [5]

Проте більшість сучасних процесорів звичайним уявленням чисел зі знаком є ​​додатковий код. Максимальне позитивне число представляється двійковим кодом 0111...111, максимальне за модулем негативне кодом 1000...000, а код 111...111 відповідає -1. Таке уявлення чисел відповідає найпростішій реалізаціїарифметичних логічних пристроїв процесора на логічних вентилях і дозволяє використовувати один і той же алгоритм додавання та віднімання як для беззнакових чисел, так і для чисел зі знаком (відмінність - тільки в умовах, за яких вважається, що настало арифметичне переповнення).

m-байтова змінна цілого типу зі знаком набуває значень від −2 8m-1 до +2 8m-1 −1.

Граничні значення для різних розрядностей

Нижче наведено таблицю граничних значень десяткових чисел для різних розрядностей при кодуванні додатковим кодом. У стовпці «Максимальне десяткове» спочатку йде максимальне значення без знака, а під ним мінімальне і максимальне ціле зі знаком.