Двоичное представление числа питон

How do you express binary literals in Python?

How do you express an integer as a binary number with Python literals? I was easily able to find the answer for hex:

  • Python 2.5 and earlier: can express binary using int(‘01010101111’,2) but not with a literal.
  • Python 2.5 and earlier: there is no way to express binary literals.
  • Python 2.6 beta: You can do like so: 0b1100111 or 0B1100111 .
  • Python 2.6 beta: will also allow 0o27 or 0O27 (second character is the letter O) to represent an octal.
  • Python 3.0 beta: Same as 2.6, but will no longer allow the older 027 syntax for octals.

8 Answers 8

For reference—future Python possibilities:
Starting with Python 2.6 you can express binary literals using the prefix 0b or 0B:

You can also use the new bin function to get the binary representation of a number:

Development version of the documentation: What’s New in Python 2.6

>>> print int('01010101111',2) 687 >>> print int('11111111',2) 255 

This is interesting for when you have strings, but if working with pure numbers, you add unnecessary computations to the code.

How do you express binary literals in Python?

They’re not «binary» literals, but rather, «integer literals». You can express integer literals with a binary format with a 0 followed by a B or b followed by a series of zeros and ones, for example:

>>> 0b0010101010 170 >>> 0B010101 21 

From the Python 3 docs, these are the ways of providing integer literals in Python:

Integer literals are described by the following lexical definitions:

integer ::= decinteger | bininteger | octinteger | hexinteger decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")* bininteger ::= "0" ("b" | "B") (["_"] bindigit)+ octinteger ::= "0" ("o" | "O") (["_"] octdigit)+ hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+ nonzerodigit ::= "1". "9" digit ::= "0". "9" bindigit ::= "0" | "1" octdigit ::= "0". "7" hexdigit ::= digit | "a". "f" | "A". "F" 

There is no limit for the length of integer literals apart from what can be stored in available memory.

Note that leading zeros in a non-zero decimal number are not allowed. This is for disambiguation with C-style octal literals, which Python used before version 3.0.

Читайте также:  Css nth child by class

Some examples of integer literals:

7 2147483647 0o177 0b100110111 3 79228162514264337593543950336 0o377 0xdeadbeef 100_000_000_000 0b_1110_0101 

Changed in version 3.6: Underscores are now allowed for grouping purposes in literals.

Other ways of expressing binary:

You can have the zeros and ones in a string object which can be manipulated (although you should probably just do bitwise operations on the integer in most cases) — just pass int the string of zeros and ones and the base you are converting from (2):

You can optionally have the 0b or 0B prefix:

If you pass it 0 as the base, it will assume base 10 if the string doesn’t specify with a prefix:

>>> int('10101', 0) 10101 >>> int('0b10101', 0) 21 

Converting from int back to human readable binary:

You can pass an integer to bin to see the string representation of a binary literal:

And you can combine bin and int to go back and forth:

You can use a format specification as well, if you want to have minimum width with preceding zeros:

>>> format(int('010101', 2), 'b'.format(width=10, fill=0)) '0000010101' >>> format(int('010101', 2), '010b') '0000010101' 

Источник

Двоичное представление числа питон

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

Двоичное представление чисел

При двоичной системе каждый разряд числа может иметь только два значения — 0 и 1. Например, 0 в десятичной системе также будет равен 0 в двоичной системе, а 1 в десятичной системе будет соответствовать 1 в двоичной системе. Следующее число в десятичной системе — 2 в двоичной системе будет соответствовать 10. То есть, когда мы к 1 прибавляем 1, то результатом будет 10. И так далее.

Например, 5 в двоичном представлении 101 и имеет три разряда. Для вывода десятичного числа в двоичной системе можно применять спецификатор 0b :

number = 5 # в двоичной форме 101 print(f"number = ") # number = 101

Без указания спецификатора функция print() выводит число в десятичной системе.

Читайте также:  Html документ структура кратко

При этом Python позволяет сразу определять число в двоичной форме. Для этого число в двоичной форме указывается после префикса 0b :

number = 0b101 # определяем число в двоичной форме print(f"number = ") # number = 101 print(f"number = ") # number = 5 - в десятичной системе

Еще несколько примеров сопоставления между двоичной и десятичной системами:

number1 = 1 # в двоичной системе 0b1 number2 = 2 # в двоичной системе 0b10 number3 = 3 # в двоичной системе 0b11 number4 = 4 # в двоичной системе 0b100 number5 = 5 # в двоичной системе 0b101 number6 = 6 # в двоичной системе 0b110

Логические операции

Логические операции выполняются над отдельными разрядами числа. В Python есть следующие логические операции:

    & (логическое умножение) Умножение производится поразрядно, и если у обоих операндов значения разрядов равно 1, то операция возвращает 1, иначе возвращается число 0. Например:

x1 = 2 # 010 y1 = 5 # 101 z1 = x1 & y1 print(f"z1 = ") # z1 = 0 x2 = 4 # 100 y2 = 5 # 101 z2 = x2 & y2 print(f"z2 = ") # z2 = 4 print(f"z2 = ") # z2 = 100
x1 = 2 # 010 y1 = 5 # 101 z1 = x1|y1 # 111 print(f"z1 = ") # z1 = 7 print(f"z1 = ") # z1 = 111 x2 = 4 # 100 y2 = 5 # 101 z2 = x2 | y2 # 101 print(f"z2 = ") # z2 = 5 print(f"z2 = ") # z2 = 101
x = 9 # 1001 y = 5 # 0101 z = x ^ y # 1100 print(f"z = ") # z = 12 print(f"z = ") # z = 1100

Здесь число 9 в двоичной форме равно 1001. Число 5 равно 0101. Операция XOR дает следующий результат: 1^0, 0^1, 0^0, 1^1. Здесь мы видим, что первые два разряда чисел содержат разные значения, поэтому первые два разряда получат значение 1. А последние два разряда чисел содержат одинаковые значения, поэтому последние два разряда получат значение 0. Таким образом, мы получаем число 1100 или 12 в десятичной системе. нередко данную операцию применяют для простого шифрования:

x = 45 # Значение, которое надо зашифровать - в двоичной форме 101101 key = 102 # Пусть это будет ключ - в двоичной форме 1100110 encrypt = x ^ key # Результатом будет число 1001011 или 75 print(f"Зашифрованное число: ") decrypt = encrypt ^ key # Результатом будет исходное число 45 print(f"Расшифрованное число: ")
x = 9 # 1001 y = 5 # 0101 x = x ^ y y = x ^ y x = x ^ y print(f"x = ") # x = 5 print(f"y = ") # y = 9

Операции сдвига

Операции сдвига также производятся над разрядами чисел. Сдвиг может происходить вправо и влево.

Таким образом, если исходное число, которое надо сдвинуть в ту или другую строну, делится на два, то фактически получается умножение или деление на два. Поэтому подобную операцию можно использовать вместо непосредственного умножения или деления на два. Например:

a = 16 # в двоичной форме 10000 b = 2 c = a > b #Сдвиг числа 10000 вправо на 2 разряда, равно 100 или 4 в десятичной системе print(d) #4

При этом числа, которые участвую в операциях, необязательно должны быть кратны 2::

a = 22 # в двоичной форме 10110 b = 2 c = a > b # Сдвиг числа 10110 вправо на 2 разряда, равно 101 или 5 в десятичной системе print(d) # 5

Источник

Читайте также:  Инкапсуляция это в javascript

Что такое функция bin() в Python?

Python имеет различные встроенные функции для обработки и выполнения операций с числовыми данными.

bin() function Python используется для преобразования десятичных числовых значений данных в их двоичный формат.

функция Bin()

bin() function возвращает значение двоичного представления целого числа, переданного ей в качестве аргумента с прикрепленным к нему префиксом «0b».

Пример 1: преобразование положительного числового значения в его двоичную форму

num = 3 res_bin = bin(num) print(res_bin)

Пример 2: преобразование отрицательного числового значения в его двоичный формат

num = -3 res_bin = bin(num) print(res_bin)

Двоичное представление элементов

numpy.binary_repr() function используется для преобразования значений данных массива в двоичную форму поэлементным способом в NumPy.

numpy.binary_repr(array[value],width)
  • width : этот параметр определяет длину возвращаемой строки, представляющей двоичный формат.
  • Если в функцию передается отрицательное значение и ширина не указана, то перед результатом добавляется знак минус (‘-‘). Если указана ширина, дополнение числа до двух представляется как абсолютное значение.
import numpy as N arr = [3,5,6,2] res_arr = N.binary_repr(arr[1]) print(res_arr)
import numpy as N arr = [3,5,6,2] res_arr = N.binary_repr(arr[1],width=5) print(res_arr)

Двоичное представление элементов данных в Pandas

Мы можем представить элементы набора данных в Pandas в двоичном формате. Функцию format() можно использовать для представления целочисленного значения в наборе данных в его эквивалентном двоичном формате.

Мы можем просто использовать apply() function и создать анонимную функцию, подразумевающую манипулирование каждым значением данных с помощью лямбда-выражения Python и функции format().

data['column'].apply(lambda element: format(int(element), 'b'))

набор данных

import pandas as PD data = PD.read_csv("C:/marketing_tr.csv") data_few = PD.DataFrame(data['custAge'].iloc[2:4]) data_few['custAge'].apply(lambda i: format(int(i), '05b'))

В приведенном выше фрагменте кода мы использовали функцию format (value, ‘b’) для преобразования значений данных в двоичную форму. Кроме того, мы создали функцию для достижения той же функциональности с использованием лямбда-выражения. «05b» представляет длину возвращаемой строки, т.е. length = 5.

2 101010 3 110111 Name: custAge, dtype: object

Источник

Оцените статью