Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/40: Рейтинг темы: голосов - 40, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 29.12.2021
Сообщений: 14

Сложение двоичных чисел в строковой форме

13.12.2022, 07:20. Показов 8772. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программу на Python. не понимаю, как написать сам цикл подсчета
Ввести две строки, состоящие только из нулей и единиц. Считая их изображениями двоичных чисел, сложить их и вывести сумму на экран в двоичной и десятичной системах счисления. Исходные слагаемые в десятичную систему счисления не преобразовывать.
Вот, что я начал:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
print('\nВвод исходных данных')
str1 = '100101' #input('Введите строку символов:')
str2 = '0111' #input('Введите строку символов:')
 
print("Введена строка: ", str1)
print("Введена строка: ", str2)
 
n = len(str1)    # определение длины строки
m = len(str2)
 
 
print(n, m)
k = n - m
#for i in range(m, 0, -1):
    #if str2[i] == 1:
        #while str1[i+k] == 1:
Миниатюры
Сложение двоичных чисел в строковой форме  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2022, 07:20
Ответы с готовыми решениями:

Сложение двоичных чисел
Катерина хочет научить братика складывать двоичные числа. Чтобы складывать было легче, она дописывает нули спереди у числа, которое короче,...

Python, сложение и вычитание двоичных чисел в обратном коде
Интересует алгоритм сложения и вычитания чисел в обратном коде(длина-8символов) Осуществлять перевод в прямой,обратный и дополнительный...

Найдите сумму двоичных чисел, заданных в естественной форме. Сложение выполните в обратном коде
Найдите сумму двоичных чисел, заданных в естественной форме. Сложение выполните в обратном коде. Ответ выразите в прямом коде. (нужно...

6
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
13.12.2022, 08:04
Лучший ответ Сообщение было отмечено artoym_rd как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def bin_add(b1,b2):
    lb1=len(b1)
    lb2=len(b2)
    if lb1 > lb2:
        b2='0'*(lb1-lb2)+b2
    if lb2 > lb1:
        b1='0'*(lb2-lb1)+b1
        lb1=lb2
    p=0
    r=""
    for i in range(-1,-lb1-1,-1):
        x1=int(b1[i])
        x2=int(b2[i])
        x=x1+x2+p
        r=str(x%2)+r
        p=x//2
    if p !=0:
        r=str(p)+r
    return r
    
def fromBin(b):
    acc=0
    for a in b:
        acc=acc*2+int(a)
    return acc    
    
b1=input("b1=")
b2=input("b2=")
 
print("В двоичной   системе:",b1,"+",b2,"=",bin_add(b1,b2))
d1=fromBin(b1)
d2=fromBin(b2)
print("В десятичной системе:",d1,"+",d2,"=",d1+d2)
2
398 / 255 / 98
Регистрация: 04.11.2022
Сообщений: 378
13.12.2022, 10:27
Catstail, функция сложения по-другому
Python
1
2
3
4
5
6
7
8
9
10
11
from itertools import zip_longest
 
def bin_add1(b1, b2):
    p = 0
    r = ''
    for i, j in zip_longest(b1[::-1], b2[::-1], fillvalue='0'):
        p, d = divmod(int(i) + int(j) + p, 2)
        r = str(d) + r
    if p:
        r = str(p) + r
    return r
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
13.12.2022, 10:29
Vigilant Mole, а в чем состоит "по-другому"? В том, что я выравниваю длины вручную, а ты делаешь это стандартной функцией? А алгоритм тот же самый.
0
398 / 255 / 98
Регистрация: 04.11.2022
Сообщений: 378
13.12.2022, 11:58
Catstail, в алгоритме тут ничего особо не изменишь, если не переводить строки в числа. Я думал, что перебор строк без индексации и использование divmod ускорят работу, но нет: выигрыш около 5%. "Синтаксический сахар" это не про быстродействие

Добавлено через 16 минут
Вот это другое дело: в 22 раза быстрее! И условию не противоречит: в десятичную систему числа не переводятся
Python
1
2
def bin_add2(b1, b2):
    return f'{int(b1, 2) + int(b2, 2):b}'
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
13.12.2022, 12:00
Vigilant Mole, и опять-таки: это не алгоритмическое, а реализационное преимущество. Функция "int" - это скорее всего, сишный код. Скорость не удивляет.
1
398 / 255 / 98
Регистрация: 04.11.2022
Сообщений: 378
13.12.2022, 12:16
А использование ord/chr вместо int/str таки ускоряет работу в полтора раза!
Python
1
2
3
4
5
6
7
8
9
def bin_add1(b1, b2):
    p = 0
    r = ''
    for i, j in zip_longest(b1[::-1], b2[::-1], fillvalue='0'):
        p, d = divmod(ord(i) + ord(j) + p - 96, 2)
        r = chr(d + 48) + r
    if p:
        r = chr(p + 48) + r
    return r
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2022, 12:16
Помогаю со студенческими работами здесь

Сложение двоичных чисел
нужно сложить 3 двоичных числа 11111+11000+11100 что-то я мучаюсь но ничего неполучается у меня не получилось добавить два числа так...

Сложение двоичных чисел
Необходимо написать метод, реализующий сложение двоичных чисел. Написала, но работает не совсем верно 00000 - 00001 - 00010 - 00011 и...

Сложение двоичных чисел
Доброго времени суток, возможно кто-то поможет.. Нужно создать виртуальный прибор для сложения двоичных чисел "столбиком" в...

Сложение двоичных чисел.
Попытался сложить двоичные числа :( осознаю что ето бред,кто направит на путь истинный?: int d; int k; ...

Сложение двоичных чисел
Пожалуйста, помогите! Само задание звучало так: Даны два числа a и b из десятичной системы счисления. Нужно перевести их в двоичную, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru