Двоичные числа и их операции в Python — полное руководство

Добро пожаловать в эту статью, где мы погрузимся в мир двоичных чисел. Мы изучим их преобразования, арифметические операции и побитовые операции. Двоичные числа — это язык, который понимает каждая машина.
Любые цифровые данные/носители/системы могут быть преобразованы в двоичные файлы! Двоичные числа имеют значение в криптографии, низкоуровневом программировании и кодировании/декодировании. Сегодня они составляют основу почти всех цифровых систем. Давайте начнем это путешествие и расширим наши знания вместе.
Понимание основ двоичных чисел
Двоичные числа, представленные с использованием системы счисления с основанием 2, являются фундаментальной концепцией в цифровых системах и информатике. Система счисления с основанием 2 использует только две цифры для представления любого числа, состоящего из 0 и 1.
Напротив, десятичная система счисления, с которой мы лучше всего знакомы, представляет собой систему с основанием 10, в которой используются десять цифр (0-9). Узнайте больше о системах счисления здесь. Несколько советов, о которых следует помнить при работе с двоичными числами:
- Каждая цифра двоичного числа называется битом.
- Крайний правый бит представляет значение 2^0(=1), следующий бит слева представляет 2^1(=2), следующий бит представляет 2^2(=4) и так далее.
- Значение каждого бита получается путем возведения 2 в степень его позиции справа и умножения на соответствующее значение бита (0 или 1).
Ручное преобразование двоичного числа в десятичное
Давайте рассмотрим меньшее двоичное число с 4 битами, 1010
. Чтобы преобразовать это двоичное число в десятичное, мы можем выполнить следующие шаги:
- Чтобы преобразовать двоичное число в десятичное, присвойте каждой цифре вес в зависимости от ее положения в справа налево. Самая правая цифра имеет вес 2^0, следующая цифра имеет вес 2^1, затем 2^2 и так далее.
- Умножьте каждую цифру на соответствующий вес, что означает, что давайте пойдем справа налево, у нас есть 0 в крайнем правом углу двоичного числа, поэтому мы умножим 0 на 2 ^ 0, после этого у нас есть 1, и тогда мы будем умножать будет 2^1 и так далее.
- Суммируйте результаты: 1 * 2 ^ 3 + 0 * 2 ^ 2 + 1 * 2 ^ 1 + 0 * 2 ^ 0 = 8 + 0 + 2 + 0 = 10.
- Следовательно, двоичное число 1010 равно десятичному числу 10.
Подход Python: преобразование десятичного числа в двоичное
Чтобы преобразовать любое десятичное число в двоичное, вы можете использовать bin()
в python, который принимает целое число в качестве аргумента и выводит его двоичную форму.
decimal_number = 10
binary_number = bin(decimal_number)
print(binary_number)
Выход:

«0b» — это префикс, обозначающий, что следующее число является двоичным числом. Он служит визуальным индикатором для отличия двоичных чисел от других числовых представлений.
Подход Python: преобразование двоичного кода в десятичный
Вы можете преобразовать двоичное число в целое, используя int(binary_number,2)
функцию, указав базу 2. База 2 соответствует двоичным числам. Также присутствуют другие основания, такие как 10 для десятичного и 16 для шестнадцатеричного, вы можете использовать их для преобразования соответствующего числового представления в целые числа, просто изменив параметр функции int().
Пример:
binary_number="1010"
decimal_number = int(binary_number, 2)
print(decimal_number)
Выход:

Выполнение арифметических операций с двоичными числами в Python
Мы можем выполнять основные арифметические операции с двоичными числами точно так же, как с десятичными числами. Однако прямая арифметическая операция невозможна. Пожалуйста, просмотрите приведенный ниже пример:
# Binary addition
binary_num1 = '1010'
binary_num2 = '1101'
result = bin(int(binary_num1, 2) + int(binary_num2, 2))
print(result)
Выход:

Объяснение:
Чтобы добавить двоичные числа «1010» и «1101», мы сначала преобразуем их в десятичную форму, используя int(). Здесь «1010» и «1101» будут преобразованы в 10 (т.е. = 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0) и 13 (т.е. = 1 * 2^3). + 1 * 2 ^ 2 + 0 * 2 ^ 1 + 1 * 2 ^ 0), и после этого мы получаем окончательную сумму 23, представленную как 10111.
Аналогичные правила применяются и к другим операциям, таким как вычитание, умножение и деление. Взгляните на приведенные ниже примеры, мы просто меняем арифметические операции, но процесс двоичной арифметики остается прежним:
# Binary subtraction
binary_num1 = '1101'
binary_num2 = '1010'
result = bin(int(binary_num1, 2) - int(binary_num2, 2))
print(result)
Выход:

# Binary multiplication
binary_num1 = '1010'
binary_num2 = '1101'
result = bin(int(binary_num1, 2) * int(binary_num2, 2))
print(result)
Выход:

# Binary division
binary_num1 = '1101'
binary_num2 = '101'
result = bin(int(binary_num1, 2) // int(binary_num2, 2))
print(result)
Выход:

Изучение побитовых операций в Python
В Python побитовые операции позволяют вам манипулировать отдельными битами в целых числах. Они широко используются для проектирования схем и систем. Эти операции работают, выполняя операции над двоичными представлениями чисел. Вот наиболее часто используемые побитовые операторы в Python:
Побитовое И
Побитовое И (&
) Выполняет операцию побитового И между соответствующими битами двух чисел. Результат имеет 1 с только в позициях, где оба числа имеют 1 с. Для любой другой комбинации (01, 00, 11) мы получим 0.
Пример:
# Bitwise AND
num1 = 0b1010
num2 = 0b1100
result = num1 & num2
print(bin(result))
Выход:

Код будет выполнять побитовую операцию И над двоичными числами. 0b1010
и 0b1100
. Полученное двоичное число равно 0b1000
который представляет десятичное число 8.
Двоичные операции не ограничиваются только двумя числами; Вы можете выполнять операции более чем с двумя числами одновременно в одной строке. Это верно для всех операторов, кроме операции НЕ.
Побитовое ИЛИ
Побитовый оператор ИЛИ (|
) в Python оценивает позицию каждого бита и возвращает результат, в котором каждому биту присваивается значение 1, если хотя бы один из соответствующих битов в операндах равен 1. Возможные комбинации: 11, 10 и 01. Операция ИЛИ возвращает 0, только если мы есть 00.
Пример:
# Bitwise OR
num1 = 0b1010
num2 = 0b1100
result = num1 | num2
print(bin(result))
Код будет выполнять побитовую операцию ИЛИ над двоичными числами. 0b1010
и 0b1100
. Результат 0b1110
который представляет двоичное число 1110.
Выход:

Побитовое исключающее ИЛИ
Побитовое исключающее ИЛИ (^
) выполняет побитовую операцию XOR (исключающее ИЛИ) между соответствующими битами двух чисел. Результат имеет 1 в позициях, где биты различаются между двумя числами. На более простом языке, если соответствующие биты одинаковы (11 или 00), результат равен 0, в противном случае результат равен 1. Если вы заинтересованы в решении проблем, некоторые наблюдения за операцией XOR могут быть очень полезными. Давайте рассмотрим пример, чтобы понять реализацию Python:
# Bitwise XOR
num1 = 0b110
num2 = 0b111
result = num1 ^ num2
print(bin(result))
Код будет выполнять побитовую операцию XOR над двоичными числами. 0b110
и 0b111
. Результат 0b110
который представляет двоичное число 110.
Выход:

Побитовое НЕ
Побитовое НЕ (~
) выполняет побитовую операцию НЕ над единый номер, инвертируя все биты. Этот оператор переворачивает все 1 на 0 и наоборот.
# Bitwise NOT
num = 0b1010
result = ~num
print(bin(result))
Код применяет побитовое НЕ (~) к двоичному коду 0b1010, в результате чего получается 0b-1011 (дополнение до двух). Он представляет -5 в десятичной форме, переворачивая биты и добавляя 1.
Выход:

Подведение итогов: двоичные числа и их операции в Python
В этой статье мы погрузились в увлекательный мир двоичных чисел и операций с ними в Python. От понимания основ до выполнения сложных побитовых операций — мы увидели, как Python упрощает работу с двоичными числами. Пока мы продолжаем изучать возможности Python, какие еще интересные аспекты этого языка вам хотелось бы открыть?
Ниже приведены несколько интересных статей AskPython, с которыми вы можете ознакомиться.:
Ссылка на источник