/
Вопросы и ответы
/
Python
/

Какая функция нужна для перевода в двоичную систему в Python?

Какая функция нужна для перевода в двоичную систему в Python?

4 года назад

Andrey Moshkov

Ответы

1

Встроенная в Python функция bin() преобразует целое (десятичное) число в двоичную (бинарную) строку с префиксом '0b'.

1
2
3
x = 10
print(bin(x))
# => 0b1010

Так же, для перевода в бинарную систему, можно использовать встроенную функцию format().

Синтаксис:

1
format(value, format_spec='', /)

где value, целое число, a format_spec спецификации формата 'Mini-Language' При указании спецификации посредством 'b' или '#b' функция вернет двоичную (бинарную) строку без/с префиксом '0b'.

1
2
3
4
5
a = 7
b2 = format(a, '#b')
b3 = format(a, 'b')
print(b2, 'и', b3)
# => 0b111 и 111

4 года назад

Дмитрий Ибрагимов

0

Прекрасная статья! Интересно было бы почитать про обратный путь из двоичной в десятичную

3 года назад

Ян

0

Для перевода в двоичную систему в Python есть встроенная функция bin(). Она возвращает строку с префиксом 0b:

1
print(bin(10))   # => 0b1010

Без префикса число выводят через format() или f-строку:

1
2
3
print(format(10, "b"))  # => 1010
print(f"{10:b}")        # => 1010
print(f"{10:08b}")      # => 00001010 — дополнить нулями до 8 знаков

Какой способ выбрать

СпособРезультат для 10Когда использовать
bin(10)'0b1010'быстро посмотреть число
bin(10)[2:]'1010'убрать префикс срезом
format(10, "b")'1010'строка без префикса
f"{10:08b}"'00001010'фиксированная длина, например байт

Как перевести вручную: деление на 2

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

Переведём 13:

1
2
3
4
13 : 2 = 6, остаток 1
 6 : 2 = 3, остаток 0
 3 : 2 = 1, остаток 1
 1 : 2 = 0, остаток 1

Снизу вверх: 1101. Проверка: bin(13) → '0b1101'.

Тот же алгоритм на Python:

1
2
3
4
5
6
7
8
9
10
def to_binary(n):
    if n == 0:
        return "0"
    digits = ""
    while n > 0:
        digits = str(n % 2) + digits
        n //= 2
    return digits

print(to_binary(13))  # => 1101

Другие системы

1
2
3
oct(64)            # => '0o100' — восьмеричная
hex(255)           # => '0xff' — шестнадцатеричная
format(255, "X")   # => 'FF' — заглавными буквами без префикса

Обратный перевод в десятичную делает int() со вторым аргументом: int("1101", 2) вернёт 13.

Частые ошибки

1
2
bin(2.5)
# TypeError: 'float' object cannot be interpreted as an integer

bin() принимает только целые числа. Строку из input() сначала переведите в число: bin(int(input())).

Отрицательные числа bin() выводит со знаком минус: bin(-10) → '-0b1010'. Дополнительный код, как в памяти компьютера, функция не показывает.

Системы счисления и встроенные функции разбирают в бесплатном курсе «Основы Python».

18 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845