Python: побитовые операции

Типы данных

На самом низком уровне программирования, процессор работает только с машинными инструкциями по типу «возьми число по адресу А, сложи его с числом по адресу Б и помести результат в адрес С». На этом уровне нет типов данных, а следовательно процессор работает только с числами (да, символы тоже преобразуются в числа) и самое важное здесь их длинна.

  • 1 бит — это минимальная единица измерения информации.
  • 1 байт содержит 8 бит — это является минимальной адресуемой единицей хранения информации в памяти компьютера, чтобы к нему можно было обратиться и достать из памяти.

byte and bit

Число в памяти, в зависимости от своего размера, может занимать 1 или более байт.

bytes in memory

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

Количество байт для хранения числа можно увеличивать только путем удваивания. Т.е. если вам не хватает 4 байт для хранения, то вы используете 8 байт, потом 16 байт и т.д.. При этом те байты которые не используются для хранения информации заполняются нулями. Такая порционность связана с особенностями работы процессора.

Для удобства работы с числами в памяти компьютера — для высокоуровневых языков программирования придумали типы данных.

Побитовые операции

Побитовые операция в Python, Java, С++ и других языках

Операция Назначение
a & b Побитовое И для a и b

Используется для выключения битов. Любой бит со значением 0 выключает бит.

Пример:

  11001010
& 11100010
  --------
  11000010
a | b Побитовое ИЛИ для a и b
  11001010
| 11100010
  --------
  11101010
a ^ b Исключающее ИЛИ для a и b
  11001010
^ 11100010
  --------
  00101000
~a Инверсия битов для a
~11001010
 --------
 00110101
a << b Побитовый сдвиг влево для a на b

left-bits-shift

a >> b Побитовый сдвиг вправо для a на b

right-bits-shift

Переводы из одной системы счисления в другую (пример на Python)

Перевод из 10-ричной системы счисления

  • hex() — в 16-ричную систему
  • oct() — в 8-ричную систему
  • bin() — в 2-ичную систему

Перевод в 10-ричную систему счисления из любой другой

int(number, base)

где number это ваше число, а base это указание системы счисления из которой вы переводите (может принимать значения: 2, 8, 16).

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями: