Программа принимает число и переводит его в двоичную систему счисления с использованием рекурсии.
Решение задачи
- Задаем рекурсивную функцию, которая может принимать в качестве аргумента число.
- Принимаем от пользователя число и передаем его в качестве аргумента в рекурсивную функцию.
- В самой функции в качестве базового условия рекурсии задаем равенство входящего аргумента нулю. В этом случае функция возвращает переменную, в которую до начала работы функции был помещен пустой список.
- В противном случае в список добавляется остаток от деления аргумента на 2 , а затем снова вызывается эта же функция, в которую в качестве аргумента передается результат целочисленного деления на 2 .
- Далее мы переворачиваем список и выводим его на экран при помощи цикла for .
- Конец
Исходный код
Ниже дан исходный код, который переводит число в двоичную систему счисления при помощи рекурсии. Результаты работы программы также даны ниже.
Перевод числа в двоичную систему за два шага!!!
l = [] def convert(b): if (b == 0): return l dig = b % 2 l.append(dig) convert(b // 2) a = int(input(«Введите число: «)) convert(a) l.reverse() print(«Двоичная форма числа:») for i in l: print(i)
Объяснение работы программы
- Создается переменная l , которая инициируется пустым списком.
- Определяется рекурсивная функция convert() , которая в качестве аргумента принимает число.
- В самой функции определяется базовое условие рекурсии. Оно состоит в равенстве аргумента функции 0 . В этом случае функция возвращает сформированный рекурсивным образом список l .
- В противном случае каждая цифра числа переводится в двоичный вид и добавляется в список в виде 0 или 1 . А функция вызывается еще раз с аргументом, который был получен из первоначального аргумента посредством целочисленного деления на 2 .
- Затем список инвертируется посредством функции reverse() и выводится на экран с помощью цикла for .
Результаты работы программы
Пример 1: Введите число: 20 Двоичная форма числа: 1 0 1 0 0 Пример 2: Введите число: 7 Двоичная форма числа: 1 1 1
Источник: pythonist.ru
Число в двоичной системе счисления с лидирующими нулями
Главное, чтобы было 1 байт — 8 цифр. Например, функция bin переводит 1 в 0b1 , а требуется получить 0000 0001 .
Отслеживать
9,226 4 4 золотых знака 40 40 серебряных знаков 56 56 бронзовых знаков
задан 29 окт 2015 в 9:49
Николай Михальцов Николай Михальцов
15 1 1 серебряный знак 5 5 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
«».format(n) например можно так.
Отслеживать
ответ дан 29 окт 2015 в 9:57
Владимир Мартьянов Владимир Мартьянов
9,639 4 4 золотых знака 21 21 серебряный знак 35 35 бронзовых знаков
get_bin = lambda x, n: x >= 0 and str(bin(x))[2:].zfill(n) or «-» + str(bin(x))[3:].zfill(n)
29 окт 2015 в 10:00
29 окт 2015 в 10:01
29 окт 2015 в 10:03
Просто о двоичной системе счисления и двоичном коде. #1
30 окт 2015 в 23:25
Для неотрицательных целых чисел n :
bin(n)[2:].zfill(8)
Отслеживать
Начиная с Python 3.6 можно воспользоваться F-строками и возможностью использования знака подчёркивания _ в качестве разделителя цифр числа:
где x — это выражение, результат которого нужно вывести в двоичном представлении,
: отделяет это выражение от описания форматирования (язык то же, что и в методе .format() ),
0 задаёт символ заполнения,
9 — это минимальное количество символов строке (8 на байт, один символ для разделителя),
_ добавляет разделитель между каждыми четырьмя символами (наподобие разделителей тысяч в записи числа),
b указывает, что вывод должен производиться в двоичной системе счисления.
Например, при x = 1 вывод будет почти таким, какой вам и требовался:
print(f») # 0000_0001
Если подчёркивание в качестве разделителя не подходит, то можно легко заменить его на пробелы:
print(f».replace(‘_’, ‘ ‘)) # 0000 0001
Важно отметить, что при отрицательных значениях x этот код заберёт одну позицию на знак:
print(f») # -000_0001
Если всё же требуется обрабатывать и отрицательные числа, код можно дополнить одним условием:
x = -1 print(f’ 0 else 10>_b>’) # -0000_0001
Также важно, что числа, не помещающиеся в выделенное пространство, не будут дополняться нулями слева, но разделение по 4 символа сохранится:
print(f») # 1_1111_0100_0000
Здесь играет роль то, что число 9 в форматирующем выражении описывает именно минимальную ширину строки, и никак не ограничивает её сверху.
Источник: ru.stackoverflow.com
Вывести двоичный код вводимого числа(integer) и наоборот из двоичного в integer. — Pascal
Напишите плиззз программу, которая выводит двоичный код вводимого числа(integer) и наоборот из двоичного в integer. И при помощи процедуры printbyte и printvar.
Код к задаче: «Вывести двоичный код вводимого числа(integer) и наоборот из двоичного в integer.»
Листинг программы
< Составить программу перевода десятичного числа в двоичное >uses crt; var a : longint; function DEC_BIN(x:longint):string; const digits:array [0..1] of char = (‘0′,’1’); var res:string; d:0..1; begin res:=»; while (x<>0) do begin d:=x mod 2; res:=digits[d]+res; x:=x div 2; end; DEC_BIN:=res; end; begin < основная программа >clrscr; write(‘Введите десятичное число а= ‘); readln( a ); writeln( DEC_BIN(a) ); readln end. < Составить программу перевода двоичного числа в десятичное >uses crt; var a : string; function BIN_DEC(x:string):longint; const digits:array [0..1] of char = (‘0′,’1’); var res,ves:longint; i,j:byte; begin res:=0; ves:=1; for i:=length(x) downto 1 do begin j:=0; while (digits[j]<>x[i]) do inc(j); res:=res+ves*j; ves:=ves*2; end; BIN_DEC:=res; end; begin < основная программа >write(‘Введите бинарное число а= ‘); readln( a ); writeln( BIN_DEC(a) ); readln end.
Источник: studassistent.ru