3.1: Цілі числа
- Page ID
- 67156
Цілі числа
Нагадаємо, що математично ціле число є рахунковим числом (1,2,3,...) разом з 0 і від'ємними числами (−1, −2, −3,.). Математично мислення не існує найбільшого (або найменшого) цілого числа, однак насправді, якщо ми зберігаємо число на комп'ютері (який є кінцевим пристроєм), має бути обмеження на найменші та найбільші цілі числа, які слід зберігати. Практично кажучи, ми обмежимо ціле число деякою кількістю біт і стандартними розмірами є 8, 16, 32, 64 і 128.
Цілі числа без знаку
Спочатку ми розглянемо цілі числа без знака і, як правило, вони вважаються невід'ємними цілими числами (0,1,2,3,...). Наприклад, 8-бітові беззнакові цілі числа мають загальну кількість\(2^8 = 256\) невід'ємних чисел, а оскільки найменший дорівнює 0, найбільший дорівнює 255.
У julia типами даних для цілих чисел без знаку є UInt8, UInt16, UIint32, UInt64
та UInt128
. Ми можемо отримати найменше та найбільше значення для них за допомогою функцій typemin
та typemax
.
Додаток XXXX охоплює багато деталей подання цілих чисел у двійкових і виконання основних операцій. Ми розглянемо поверхневий рівень представлення цілих чисел та операцій тут, у цьому розділі, але для тих, хто бажає отримати більше глибини, див. Додаток XXX
У julia ми можемо використовувати функцію bitstring
, щоб дати двійкове представлення цілих чисел і плаваючих точок. Наприклад
і
Аналогічно, цілі числа без знака з більшою кількістю бітів працюють однаково з найбільшим діапазоном цілих чисел. Наприклад
який є рядком довжиною 64.
Цілі числа зі знаком
У julia знаковими цілими числами є Int8, Int16, Iint32, Int64
та Int128
. Крім того, існує цілочисельний тип Int
, який за замовчуванням відповідає цілому розміру типового цілого розміру на вашому комп'ютері. Це, як правило, Int64
.
Давайте розглянемо докладно про 8-бітних цілих числах зі знаком. Найбільші та найменші значення, які можна зберігати за допомогою Int8, можна знайти за допомогою
В основному число між 0 і 127 ідентичне між Int8 і UInt8.
Переповнення та підтікання цілочисельних операцій
Знову ж таки, на відміну від математичних цілих чисел, будь-яке комп'ютерне ціле число має максимальне і мінімальне значення. Коротше кажучи, якщо операція призводить до числа вище максимуму, то є помилка переповнення і менше мінімальної є помилка підливу.
Ось простий приклад з 8-бітними цілими числами. Нехай
і
Сума 95 і 70 дорівнює 165 і вище максимального значення для Int8
. Однак, вводячи
повертає дивний результат. Можливо, ми очікували помилку. Що тільки що сталося? Якщо ви хочете дізнатися, чому виникло значення -91, копатися в подробицях в розділі XXX, але причина, по якій не було помилки переповнення, полягає в тому, що julia не перевіряє автоматично на такі помилки, через те, що в перевірці є накладні витрати, що сповільнить операції.
Якщо ви хочете перевірити, є набір операцій, які перевірятимуть, отже:
Перейдіть до документації Julia на checked_add, який запускає список функцій, які перевірятимуть над та підтікання. Якщо є ймовірність помилок переповнення/підливу, то результати можуть бути неправильними. Майте це на увазі, як в розділі XXXX ми напишемо тести для коду.