Как перевести число в двоичную систему в питоне
Перейти к содержимому

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

  • автор:

Python Program to Convert Floating-Point Decimal to Binary

Floating Point decimal conversion to binary using a python program.

Decimal vs Binary

The decimal numeral system is a system in which the numbers are expressed in scales of 10. Whereas the binary numeral system involves expressing numbers in scales of 2.

Procedure

Step 1: The whole number part(59) of 59.65625 is divided by 2 until the quotient becomes 1. The remainder(carry) that is accumulated(either 1 or 0) till the last sequence of operation that gives the quotient 1 is taken in the reverse order of creation, so as to obtain 111011.

59/2 = 29 (1 is taken as carry)

29/2 = 14 (1 is taken as carry)

14/2 = 7 (0 is taken as carry)

7/2 = 3 (1 is taken as carry)

3/2 = 1 (1 is taken as carry)

So when we reverse the carry, we get 11011. Finally, we place the final quotient at the very beginning of the 11011 to get 111011.

Step 2: The decimal part is multiplied by 2 as many times as the number of decimal places in the final result required. To elaborate, let's take the above-mentioned example of 59.65625. Here 0.65625 = 65625 * 10^-5.

0.656252 = 1.31250 (1 is taken as carry)

0.312502 = 0.62500 (0 is taken as carry)

0.625002 = 1.25000 (1 is taken as carry)

0.250002 = 0.50000 (0 is taken as carry)

0.50000*2 = 1.00000 (1 is taken as carry)
When we bring the calculations together, we obtain 111011.10101

The Python Program:

The code starts with receiving input from the user.

The number of decimal places to which the final result is to be adjusted to is received from the end-user.

The whole_list(list of the whole numbers) and dec_list(list of the decimal numbers) are declared as global variables.

The entered floating-point decimal is split into whole number and decimal.

The whole number part is divided by 2 and the ensuing quotient is then divided by 2. The process continued until the quotient is 1. The remainder thus formed by each iteration of the while loop is added to whole_list(list of the whole numbers).

The decimal part is multiplied by 2 and the resultant product is split into whole number and decimal. The whole number thus formed is added to dec_list(list of the decimal numbers). The process is continued up to the number of decimal places to which the final result is to be adjusted.

If the length of whole_list is greater than 1(for instance, 1.0567 will have a single element whole_list), the list is reversed. Subsequently, 1 is inserted as the first element of whole_list.

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

Статьи

Введение

В этой небольшой статье рассмотрим перевод из десятичной системы счисления в двоичную в python. Рассмотрим функцию bin() и напишем свою программу для перевода из десятичной СС в двоичную.

Функция bin()

Начнём с того, что в python существует специальная функция для перевода из десятичной системы счисления в двоичную.

bin() – функция, преобразовывающая целое число в двоичную строку. В качестве параметра принимает десятичное число.

Для примера переведём число 15 в двоичную СС с помощью функции bin():

Как мы видим, всё преобразовалось верно, ведь 15 в двоичной СС – это 1111.

Преобразование вручную

Перейдём к тому, что напишем код для преобразования десятичной СС в двоичную.

Получать двоичное число из десятичного мы будем путём нахождения остатков от деления на 2. При этом, число, полученное на предыдущей итерации выступает в качестве делимого в следующей итерации. Деление заканчивается, когда от числа остаётся ноль. Все полученные остатки собираются в двоичное число начиная с конца.

Для примера рассмотрим алгоритм перевода числа 15 в двоичную СС:

15 / 2 = 7, остаток 1
7 / 2 = 3, остаток 1
3 / 2 = 1, остаток 1
1 / 2 = 0, остаток 1
0 – конец деления
Итог: 11112

Теперь напишем код для реализации алгоритма:

number – переменная, в которую вводится число в десятичной СС;

numberb – переменная, хранящая остатки от деления.

Заключение

Вот мы и разобрались с вопросом перевода десятичной системы счисления в двоичную с помощью python.

Типы данных

Важнейшим компонентом любой компьютерной программы являются данные. По большому счету, программа — это данные, с которыми мы выполняем определенные операции. Данные бывают разными и у каждого типа данных свое предназначение и свои возможности.

Какие типы данных есть в Питоне

Некоторые типы данных позволяют записать только одну единицу информации в переменную. К ним, в частности, относятся:

  • целочисленное значение (integer)
  • десятичная дробь, или если быть более точным, число с плавающей точкой (float)
  • комплексное число (complex)
  • строка (string) и
  • логическое значение (boolean)

Именно этими типами данных мы и займемся на сегодняшнем занятии. Также существуют типы данных, в которых могут содержаться несколько элементов (так называемые коллекции, collections). К ним относятся:

  • списки (list)
  • словари (dictionary)
  • множества (set) и
  • кортежи (tuple)

Мы изучим их во втором разделе этого курса.

Работа с числами

Числовые данные могут быть представлены целым числом (integer), числом с плавающей точкой (float) и комплексным числом (complex).

Кроме того, в переменную типа float можно записать значение в виде экспоненциальной записи (scientific notation).

Операции с числами

С числами возможны арифметические операции, операции сравнения и логические операции. Повторим уже известные нам арифметические операции.

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

Также напомню про операторы сравнения.

Здесь хотелось бы обратить внимание на два момента. Во-первых, результатом сравнения становится логическое значение True или False (об этом чуть позднее). Во-вторых, еще раз напомню, что == и = — это разные символы. В первом случае мы проверяем равенство двух значений, во втором — присваиваем значение переменной.

Кроме этого, существуют и чисто логические операции И, ИЛИ и НЕ.

Перевод чисел в другую систему счисления

Перевод в двоичную систему, то есть в систему нулей и единиц, можно сделать с помощью функции bin(). Для обратного преобразования в десятичную систему достаточно функции int() с указанием системы счисления, из которой происходит преобразование.

Перевод числа в восьмеричную и шестнадцатеричную систему счисления осуществляется аналогичным образом с помощью функций oct() и hex() соответственно.

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

Строковые данные

Как мы уже знаем, строку нужно заключить в одинарные или двойные кавычки.

Такой тип данных можно разбить на несколько строк (multiline string). Для этого нужно использовать тройные одинарные или двойные кавычки.

Длина строки

Функция len() позволяет посчитать количество символов в строке.

Объединение строк

Две и более строки можно объединить друг с другом. Пробелы, если они нужны, добавляются отдельно.

Индекс символа в строке

Как мы помним, при создании строки, Питон автоматически создает два индекса, нумерует символы от начала и до конца (начиная с нуля, положительный индекс) и с конца и до начала отрицательный индекс).

положительный и отрицательный индексы строки в Питоне

Срезы строк

Также можно делать срезы, то есть выбирать сразу несколько символов.

Обратите внимание, что для того чтобы выбрать четвертый элемент, мы указываем его индекс (три, потому что начинаем с нуля). Затем мы указываем элемент до которого, но не включая, мы хотим сделать срез. В данном случае это индекс шесть, соответствующий седьмому элементу.

срез строки в Питоне

Циклы в строках

Символы в строке можно вывести один за другим с помощью цикла for.

Методы .strip() и .split()

Метод .strip() удаляет символы в начале и в конце строки. Это бывает полезно, если в базе данных значения записаны, например, вместе со служебными символами и от них нужно избавиться.

Метод .split() делит строку на части. По умолчанию, по пробелам, но можно указать другой разделитель.

В результате получился питоновский список. Если посчитать длину списка, то мы получим количество слов в тексте.

Замена символа в строке

Бывает полезно заменить один символ другим. Например, если дробная часть отделена запятой, и напрямую преобразовать такую строку во float не получится.

Логические значения

В программировании иногда очень полезно задать выражению истинное или ложное значение и в зависимости от этого выполнить те или иные действия. Мы уже видели ранее, что при сравнении Питон выдает значения True или False. На самом деле эти значения сами по себе являются отдельным типом данных и могут быть записаны в переменную.

Логический тип данных называется bool или boolean в честь Джорджа Буля, который создал так называемую булеву алгебру (Boolean algebra) или алгебру логики. Она, в частности, лежит в основе любого компьютера, но также используется в теории множеств и статистике.

Теперь рассмотрим несложную программу.

Подведем итог

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

Работая со строками, мы можем определить количество символов в строке, объединить несколько строк, посмотреть символ по его индексу, сделать срез строки, просмотреть каждый из символов в цикле for, избавиться от ненужных символов по краям строки или разделить строку на отдельные части. Кроме того, мы можем заменить один элемент строки на другой.

Помимо этого, мы можем записать в переменную логическое значение True или False, и использовать его при написании программ.

Вопросы для закрепления

Какими типами данных представлены числовые значения?

Посмотреть правильный ответ

Ответ: целое число (integer), число с плавающей точкой (float) и комплексное число (complex)

Какой символ используется по умолчанию в методах .strip() и .split()?

Посмотреть правильный ответ

Ответ: пробел. Метод .strip() по умолчанию удаляет пробелы по краям строки, метод .split() по умолчанию делит строку по пробелам.

Дополнительные упражнения⧉ вы найдете в конце ноутбука.

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

Ответы на вопросы

Вопрос. Как можно преобразовать список чисел таким образом, чтобы каждый элемент списка превратился в отдельную строку? Ведь если передать список чисел в функцию str(), на выходе мы получим одну строку со списком внутри, а не список из строк.

Ответ. Действительно, использовать только функцию str() в данном случае нельзя.

Converting integer to binary in python

In order to convert an integer to a binary, I have used this code :

and when to erase the ‘0b’, I use this :

What can I do if I want to show 6 as 00000110 instead of 110 ?

just-Luka's user avatar

17 Answers 17

Just to explain the parts of the formatting string:

  • <> places a variable into a string
  • 0 takes the variable at argument position 0
  • : adds formatting options for this variable (otherwise it would represent decimal 6 )
  • 08 formats the number to eight digits zero-padded on the left
  • b converts the number to its binary representation

If you’re using a version of Python 3.6 or above, you can also use f-strings:

TrebledJ's user avatar

Just another idea:

Shorter way via string interpolation (Python 3.6+):

A bit twiddling method.

marbel82's user avatar

Just use the format function

The general form is

eumiro’s answer is better, however I’m just posting this for variety:

numpy.binary_repr(num, width=None) has a magic width argument

Relevant examples from the documentation linked above:

The two’s complement is returned when the input number is negative and width is specified:

Tom Hale's user avatar

.. or if you’re not sure it should always be 8 digits, you can pass it as a parameter:

Going Old School always works

Shadrack Kimutai's user avatar

The best way is to specify the format.

returns the binary value of a in string format.

To convert a binary string back to integer, use int() function.

returns integer value of binary string.

Pranjalya's user avatar

even an easier way

Raad Altaie's user avatar

Assuming you want to parse the number of digits used to represent from a variable which is not always constant, a good way will be to use numpy.binary.

could be useful when you apply binary to power sets

You can use just:

In my opinion this is the easiest way!

eyllanesc's user avatar

Dmity Bryuhanov's user avatar

The python package Binary Fractions has a full implementation of binaries as well as binary fractions. You can do your operation as follows:

This package has many other methods for manipulating binary strings with full precision.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *