Сложение в системах счисления python

Целочисленная арифметика¶

Специальный символ, выполняющий арифметические вычисления. В выражении a * b символ * — оператор умножения, a и b — его операнды.

Оператор, принимающий два операнда, называется бинарным. Унарный оператор принимает один операнд. Пример унарного оператора: -1 .

Последовательность операторов и операндов, результат вычисления которой сводится к единственному значению. Простейшие выражения состоят из одного значения и не содержат операторов: 42 , «Hello, World!» . Пример более сложного выражения: 2 ** 32 — 1 .

Свойство оператора, влияющее на очередность его выполнения в выражении с несколькими различными операторами при отсутствии явного (с помощью скобок) указания на порядок их вычисления.

Например, результат выражения 2 + 2 * 2 — 6, поскольку приоритет операции умножения выше, чем приоритет операции сложения. Изменить порядок вычислений в выражении можно с помощью скобок:

последовательность выполнения операций (или направление вычисления), реализуемая когда операции имеют одинаковый приоритет и отсутствует явное (с помощью скобок) указание на очерёдность их выполнения.

Различают правую (справа налево) и левую (слева направо) ассоциативность. Пример оператора с левой ассоциативностью — оператор деления / . Так, выражение 8 // 4 // 2 эквивалентно (8 // 4) // 2 и его результат равен 1.

Пример оператора с правой ассоциативностью — оператор возведения в степень:

>>> 2 ** 2 ** 3 256 >>> 2 ** (2 ** 3) 256 >>> (2 ** 2) ** 3 64 

Арифметические операторы¶

В таблице приведены некоторые арифметические операторы языка Python в порядке уменьшения приоритета (операторы с наибольшим приоритетом расположены выше).

Источник

Python. Урок 4. Арифметические операции

Follow us on Google Plus Follow us on rss

Язык Python, благодаря наличию огромного количества библиотек для решения разного рода вычислительных задач, сегодня является конкурентом таким пакетам как Matlab и Octave. Запущенный в интерактивном режиме, он, фактически, превращается в мощный калькулятор. В этом уроке речь пойдет об арифметических операциях, доступных в данном языке.

Арифметические операции будем изучать применительно к числам, причем работу с комплексными числами разберем отдельно. Также, кратко остановимся на битовых операциях, представлении чисел в разных системах исчисления и коснемся библиотеки math.

Как было сказано в предыдущем уроке, посвященном типами и модели данных Python, в этом языке существует три встроенных числовых типа данных:

Если в качестве операндов некоторого арифметического выражения используются только целые числа, то результат тоже будет целое число. Исключением является операция деления, результатом которой является вещественное число. При совместном использовании целочисленных и вещественных переменных, результат будет вещественным.

Арифметические операции с целыми и вещественными числами

Все эксперименты будем производить в Python, запущенном в интерактивном режиме.

Складывать можно непосредственно сами числа…

либо переменные, но они должны предварительно быть проинициализированы.

Результат операции сложения можно присвоить другой переменной…

>>> a = 3 >>> b = 2 >>> c = a + b >>> print(c) 5 

либо ей же самой, в таком случае можно использовать полную или сокращенную запись, полная выглядит так

>>> a = 3 >>> b = 2 >>> a = a + b >>> print(a) 5 
>>> a = 3 >>> b = 2 >>> a += b >>> print(a) 5 

Все перечисленные выше варианты использования операции сложения могут быть применены для всех нижеследующих операций.

>>> 5 * 8 40 >>> a = 4 >>> a *= 10 >>> print(a) 40 
>>> 9 / 3 3.0 >>> a = 7 >>> b = 4 >>> a / b 1.75

Получение целой части от деления.

>>> 9 // 3 3 >>> a = 7 >>> b = 4 >>> a // b 1 

Получение остатка от деления.

>>> 9 % 5 4 >>> a = 7 >>> b = 4 >>> a % b 3 
>>> 5 ** 4 625 >>> a = 4 >>> b = 3 >>> a ** b 64

Работа с комплексными числами

Для создания комплексного числа можно использовать функцию complex(a, b), в которую, в качестве первого аргумента, передается действительная часть, в качестве второго – мнимая. Либо записать число в виде a + bj.

Рассмотрим несколько примеров.

Создание комплексного числа.

>>> z = 1 + 2j >>> print(z) (1+2j) >>> x = complex(3, 2) >>> print(x) (3+2j)

Комплексные числа можно складывать, вычитать, умножать, делить и возводить в степень.

>>> x + z (4+4j) >>> x - z (2+0j) >>> x * z (-1+8j) >>> x / z (1.4-0.8j) >>> x ** z (-1.1122722036363393-0.012635185355335208j) >>> x ** 3 (-9+46j)

У комплексного числа можно извлечь действительную и мнимую части.

>>> x = 3 + 2j >>> x.real 3.0 >>> x.imag 2.0 

Для получения комплексносопряженного число необходимо использовать метод conjugate().

Битовые операции

В Python доступны битовые операции, их можно производить над целыми числами.

Побитовое Исключающее ИЛИ (XOR).

Представление чисел в других системах счисления

В своей повседневной жизни мы используем десятичную систему исчисления, но при программирования, очень часто, приходится работать с шестнадцатеричной, двоичной и восьмеричной.

Представление числа в шестнадцатеричной системе

Представление числа в восьмеричной системе

Представление числа в двоичной системе

Библиотека (модуль) math

В стандартную поставку Python входит библиотека math, в которой содержится большое количество часто используемых математических функций.

Для работы с данным модулем его предварительно нужно импортировать.

Рассмотрим наиболее часто используемые функции.

Возвращает ближайшее целое число большее, чем x.

Возвращает абсолютное значение числа.

math.factorial(x)

Возвращает ближайшее целое число меньшее, чем x.

>>> math.exp(3) 20.085536923187668

math.log(x[, base])

По умолчанию вычисляет логарифм по основанию e, дополнительно можно указать основание логарифма.

>>> math.log2(8) 3.0 >>> math.log10(1000) 3.0 >>> math.log(5) 1.6094379124341003 >>> math.log(4, 8) 0.6666666666666667

Вычисляет значение x в степени y.

Тригонометрические функции, их мы оставим без примера.

И напоследок пару констант.

Помимо перечисленных, модуль math содержит ещё много различных функций, за более подробной информацией можете обратиться на официальный сайт.

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

>>

Источник

Числа¶

Числа в Python 3 — целые, вещественные, комплексные. Работа с числами и операции над ними.

Целые числа (int)¶

Числа в Python 3 ничем не отличаются от обычных чисел. Они поддерживают набор самых обычных математических операций:

Синтаксис Описание
x + y Сложение
x — y Вычитание
x * y Умножение
x / y Деление
x // y Получение целой части от деления
x % y Остаток от деления
-x Смена знака числа
abs(x) Модуль числа
divmod(x, y) Пара ( x // y , x % y )
x ** y Возведение в степень
pow(x, y[, z]) x y по модулю (если модуль задан)

Также нужно отметить, что целые числа в python 3, в отличие от многих других языков, поддерживают длинную арифметику (однако, это требует больше памяти).

>>> 255 + 34 289 >>> 5 * 2 10 >>> 20 / 3 6.666666666666667 >>> 20 // 3 6 >>> 20 % 3 2 >>> 3 ** 4 81 >>> pow(3, 4) 81 >>> pow(3, 4, 27) 0 >>> 3 ** 150 369988485035126972924700782451696644186473100389722973815184405301748249 

Битовые операции¶

Над целыми числами также можно производить битовые операции

Синтаксис Описание
x | y Побитовое или
x ^ y Побитовое исключающее или
x & y Побитовое и
x Битовый сдвиг влево
x >> y Битовый сдвиг вправо
~x Инверсия битов

Дополнительные методы¶

int.bit_length() количество бит, необходимых для представления числа в двоичном виде, без учёта знака и лидирующих нулей.

>>> n = -37 >>> bin(n) '-0b100101' >>> n.bit_length() 6 
>>> (1024).to_bytes(2, byteorder='big') b'\x04\x00' >>> (1024).to_bytes(10, byteorder='big') b'\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00' >>> (-1024).to_bytes(10, byteorder='big', signed=True) b'\xff\xff\xff\xff\xff\xff\xff\xff\xfc\x00' >>> x = 1000 >>> x.to_bytes((x.bit_length() // 8) + 1, byteorder='little') b'\xe8\x03' 

classmethod int.from_bytes(bytes, byteorder, *, signed=False) возвращает число из данной строки байтов.

>>> int.from_bytes(b'\x00\x10', byteorder='big') 16 >>> int.from_bytes(b'\x00\x10', byteorder='little') 4096 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=True) -1024 >>> int.from_bytes(b'\xfc\x00', byteorder='big', signed=False) 64512 >>> int.from_bytes([255, 0, 0], byteorder='big') 16711680 

Системы счисления¶

Те, у кого в школе была информатика, знают, что числа могут быть представлены не только в десятичной системе счисления. К примеру, в компьютере используется двоичный код, и, к примеру, число 19 в двоичной системе счисления будет выглядеть как 10011 . Также иногда нужно переводить числа из одной системы счисления в другую. Python для этого предоставляет несколько функций:

int([object], [основание системы счисления]) преобразование к целому числу в десятичной системе счисления. По умолчанию система счисления десятичная, но можно задать любое основание от 2 до 36 включительно. bin(x) преобразование целого числа в двоичную строку. hex(х) преобразование целого числа в шестнадцатеричную строку. oct(х) преобразование целого числа в восьмеричную строку.

>>> a = int('19') # Переводим строку в число >>> b = int('19.5') # Строка не является целым числом Traceback (most recent call last): File "", line 1, in ValueError: invalid literal for int() with base 10: '19.5' >>> c = int(19.5) # Применённая к числу с плавающей точкой, # отсекает дробную часть >>> print(a, c) 19 19 >>> bin(19) '0b10011' >>> oct(19) '0o23' >>> hex(19) '0x13' >>> 0b10011 # Так тоже можно записывать числовые константы 19 >>> int('10011', 2) 19 >>> int('0b10011', 2) 19 

Вещественные числа (float)¶

Вещественные числа поддерживают те же операции, что и целые. Однако (из-за представления чисел в компьютере) вещественные числа неточны, и это может привести к ошибкам:

>>> 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 + 0.1 0.9999999999999999 

Для высокой точности используют другие объекты (например Decimal и Fraction )).

Также вещественные числа не поддерживают длинную арифметику:

>>> a = 3 ** 1000 >>> a + 0.1 Traceback (most recent call last): File "", line 1, in OverflowError: int too large to convert to float 

Простенькие примеры работы с числами:

>>> c = 150 >>> d = 12.9 >>> c + d 162.9 >>> p = abs(d - c) # Модуль числа >>> print(p) 137.1 >>> round(p) # Округление 137 

Дополнительные методы¶

float.as_integer_ratio() пара целых чисел, чьё отношение равно этому числу. float.is_integer() является ли значение целым числом. float.hex() переводит float в hex (шестнадцатеричную систему счисления). classmethod float.fromhex(s) float из шестнадцатеричной строки.

>>> (10.5).hex() '0x1.5000000000000p+3' >>> float.fromhex('0x1.5000000000000p+3') 10.5 

Помимо стандартных выражений для работы с числами (а в Python их не так уж и много), в составе Python есть несколько полезных модулей.

Модуль math предоставляет более сложные математические функции.

>>> import math >>> math.pi 3.141592653589793 >>> math.sqrt(85) 9.219544457292887 

Модуль random реализует генератор случайных чисел и функции случайного выбора.

>>> import random >>> random.random() 0.15651968855132303 

Комплексные числа (complex)¶

В Python встроены также и комплексные числа:

>>> x = complex(1, 2) >>> print(x) (1+2j) >>> y = complex(3, 4) >>> print(y) (3+4j) >>> z = x + y >>> print(x) (1+2j) >>> print(z) (4+6j) >>> z = x * y >>> print(z) (-5+10j) >>> z = x / y >>> print(z) (0.44+0.08j) >>> print(x.conjugate()) # Сопряжённое число (1-2j) >>> print(x.imag) # Мнимая часть 2.0 >>> print(x.real) # Действительная часть 1.0 >>> print(x > y) # Комплексные числа нельзя сравнить Traceback (most recent call last): File "", line 1, in TypeError: unorderable types: complex() > complex() >>> print(x == y) # Но можно проверить на равенство False >>> abs(3 + 4j) # Модуль комплексного числа 5.0 >>> pow(3 + 4j, 2) # Возведение в степень (-7+24j) 

Для работы с комплексными числами используется также модуль cmath .

Источник

Читайте также:  '; echo ucwords(str_replace('.php', '', __FILE__)); echo '
Оцените статью