Цілі числа
Створення цілих чисел
При створенні за допомогю літерала можна вказати систему числення використовуючи відповідні префікси:
>>> 30 # у десятковій системі числення
30
>>> 0x1E # у шістнадцятковій системі числення
30
>>> 0o36 # у вісімковій системі числення
30
>>> 0b11110 # у двійковій системі числення
30
>>>
Для більш легшого візуального сприйняття цифри цілого числа можна розділяти символом підкреслення групуючи по 3:
>>> n = 1_345_678
>>> n
1345678
>>> 1_0_0 # насправді підкреслення ігноруються
100
>>> 0X10_FF_FF
1114111
>>>
Виклик int()
без аргументыв дає 0
.
Приведення інших типів до int
int(s, base=10)
s
–str
,bytes
абоbytearray
: представлення літерала цілого числаbase
– ціле число, що визначає кількість цифр у системі числення; допустимы значення: 0, 2-36
Приклади:
>>> int(' +15 ',10)
15
>>> int('17',8)
15
>>> int('20',16)
32
>>> int('2EF',16)
751
>>> int('19',8) # помилка, цифра 9 не може бути у 8-й системі числення
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 8: '19'
>>>
Дійсні числа приводяться до int
шляхом відкидання дробової частини:
>>> int(1.9999)
1
>>>
Класи можуть реалізовувати власний метод __int__()
для приведення об'єкта до int
:
>>> from datetime import datetime
>>> class MyDateTime(datetime):
... def __int__(self):
... return int(self.timestamp())
...
>>> d = MyDateTime.now()
>>> d
MyDateTime(2021, 9, 6, 14, 19, 44, 319623)
>>> int(d)
1630927184
>>>
Для створення int
з послідовності байт використовують класовий метод int.from_bytes()
.
Приведення int
до інших типів
Перетворити int
на символьний рядок — використовуємо вбудовані функції str(), bin(), oct(), hex()
:
>>> str(30) # у десятковій системі числення
'30'
>>> bin(30) # у двійковій системі числення
'0b11110'
>>> oct(30) # у вісімковій системі числення
'0o36'
>>> hex(30) # у шістнадцятковій системі числення
'0x1e'
>>>
Для представлення int
у вигляді послідовності байт використовують метод int.to_bytes()
.
Бітові операції
Мова Python підтримує роботу з двійковими розрядами (бітами) цілочисельних величин, де кожен біт числа розглядається окремо. Для забезпечення цього в Python використовуються так звані бітові або порозрядні оператори, що реалізують загальновідомі бітові операції.
У бітових операторах кожен операнд розглядається як послідовність двійкових розрядів (бітів), що приймають значення 0 або 1 (двійкова система числення). Над цими розрядами можна виконувати відомі операції: логічне "І", логічне "АБО", інші.
Бітові оператори в порядку спадання пріоритету:
Оператор | Операція |
---|---|
~ |
інверсія (НІ, NOT) |
<< , >> |
зсув вліво/вправо на задану кількість біт (SHIFT LEFT/RIGHT) |
& |
(І, AND) |
^ |
(виключне АБО, XOR) |
| |
(АБО, OR) |
Зауважте: Python тип int
представлений як знакове ціле число.
Відповідно бітові операції проводяться над знаковими цілими.
Наприклад при інверсії додатнє число стає від’ємним зі зсувом на -1.
Так само від’ємне число стає додатнім зі зсувом на -1.
>>> a = 0b1001
>>> a
9
>>> b = ~a
>>> b
-10
>>> bin(b)
'-0b1010'
>>> bin(~0b1111)
'-0b10000'
>>> bin(~-0b1111)
'0b1110'
>>>
Дізнатись кількість біт необхідних для представлення цілого числа можна за допомогою відповідного метода:
>>> (-10).bit_length()
4
>>> bin(-10)
'-0b1010'
>>>
Оскільки Python є мовою програмування з високим ступенем абстракції бітові операції на практиці використовуються досить рідко порівняно з іншими мовами програмування. Тому в рамках даного курса ми не розглядаємо детально бітові операції. Рекомендуємо звернутись до документації Python.