Как выразить целое число в виде двоичного числа с помощью литералов Python?
Я легко смог найти ответ для шестнадцатеричного числа:
>>> 0x12AF
4783
>>> 0x100
256
и восьмеричного:
>>> 01267
695
>>> 0100
64
**Как вы используете литералы для выражения двоичного числа в Python?
Обзор ответов
int('01010101111',2)
, но не с помощью литерала.0b1100111
или 0B1100111
.0o27
или 0O27
(второй символ - буква O) для представления восьмеричного числа.027
для восьмеричных чисел.Для reference& mdash; future возможности Пайтона:
Начиная с Питона 2.6 Вы можете выразить двойные опечатки, используя префикс 0b или 0B :
>>> 0b101111
47
Вы можете также использовать новое мусорное ведро функция, чтобы получить двойное представление числа:
>>> bin(173)
'0b10101101'
Версия развития документации: [What' s Новый у Питона 2.6] (http://docs.python.org/dev/whatsnew/2.6.html#pep-3127-integer-literal-support-and-syntax)
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255
Другой способ.
, Как Вы выражаете двойные опечатки в Пайтоне?
They' ре не " binary" опечатки, а скорее, " целое число literals". Вы можете выразить опечатки целого числа двоичным форматом с '0' сопровождаемых 'B' или 'b', сопровождаемым серией нолей и, например:
>>> 0b0010101010
170
>>> 0B010101
21
От Пайтона 3 доктора, это способы обеспечить опечатки целого числа в Пайтоне:
опечатки Целого числа описаны следующими лексическими определениями:
целое число:: = decinteger | bininteger | octinteger | hexinteger decinteger:: = nonzerodigit ([" "] цифра) * | " 0" + ([" "] " 0") * bininteger:: = " 0" (" b" | " B") ([" "] bindigit) + octinteger:: = " 0" (" o" | " O") ([" "] octdigit) + hexinteger:: = " 0" (" x" | " X") ([" _ "] hexdigit) + nonzerodigit:: = " 1"..." 9" цифра:: = " 0"..." 9" bindigit:: = " 0" | " 1" octdigit:: = " 0"..." 7" hexdigit:: = цифра | " a"..." f" | " A"..." F"
нет никакого предела для длины опечаток целого числа кроме какой может быть сохранен в доступной памяти.
Обратите внимание, что ведущие ноли в отличном от нуля десятичном числе не позволены. Это - для разрешения неоднозначности с C-стилем октальные опечатки, который Пайтон используемый перед версией 3.0.
Некоторые примеры опечаток целого числа:
7 2 147 483 647 0o177 0b100110111 3 79228162514264337593543950336 0o377 0xdeadbeef 100_000_000_000 0b_1110_0101 Измененный в версии 3.6: Подчеркивает, теперь позволены для группировки целей в опечатках.
У Вас могут быть ноли и в объекте последовательности, которым можно управлять (хотя Вы должны, вероятно, просто сделать битовые операции на целом числе в большинстве случаев) - просто передают интервалу ряд нолей и и основы, которую Вы преобразовываете от (2):
>>> int('010101', 2)
21
У Вас могут произвольно быть '0b' или '0B' префикс:
>>> int('0b0010101010', 2)
170
Если Вы передадите его '0' как основа, это примет основу 10 если последовательность doesn' t определяют с префиксом:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
Преобразование ## из интервала назад к человекочитаемому набору из двух предметов:
Вы можете передать целое число к мусорному ведру, чтобы видеть представление последовательности двойной опечатки:
>>> bin(21)
'0b10101'
И Вы можете объединить 'мусорное ведро' и 'интервал', чтобы пойти назад и вперед:
>>> bin(int('010101', 2))
'0b10101'
Вы можете использовать спецификацию формата также, если Вы хотите иметь минимальную ширину с предыдущими нолями:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'
0 в начале здесь определяет, что основа равняется 8 (не 10), который довольно легко видеть:
>>> int('010101', 0)
4161
Если Вы don' t начинаются с 0, тогда питон предполагает, что число основное 10.
>>> int('10101', 0)
10101
Я уверен, что это одна из тех вещей, которые должны быть изменены в Python 3.0, где, возможно, bin() будет сочетаться с hex() и oct().
EDIT: Ответ lbrandy' верен во всех случаях.