首页 > 编程语言 >二进制求和 python

二进制求和 python

时间:2024-04-01 21:02:53浏览次数:30  
标签:__ python 求和 carry 二进制 result 计算 字符串 进位

‘’’
计算两个二进制字符串的和
输入 : 111 1110
输出 : 10101
参与计算的二进制字符串长度可以不同,这样为计算带来麻烦,所以,
首先要补齐那个较短的 字符串。如果较短字符串长度比长字符串小3,就在较短字符串前面补3个0.
计算的过程,可以模拟手动计算的过程,从右向左逐位计算。反向遍历字符串,相同位上都是
1,相加后,这—位就变成了0,而且还要向前进位,下—位的计算要把进位的数值考虑进来,
计算右数第—位时,进位设置为0。

‘’’

def add_binary(a, b):
   # 补齐长度
   # if len(a)<len(b):
   #  a='0'*(len(b)-len(a))+str(a)
   # elif len(b)<len(a):
   #  b='0'*(len(a)-len(b))+str(b)
   # 更简单的一种方法
   a_str = a.zfill(len(a))
   b_str = b.zfill(len(a))
   
   # 进位
   carry = 0
   result = []
   # 同时遍历两个字符串,直到至少有一个字符串为空
   i = len(a_str) - 1
   while i>=0:
      # 当前位+进位
      sum_val = int(a_str[i]) + int(b_str[i]) + carry
      carry = sum_val // 2
      current = sum_val % 2  # 当前位
      #保存数据
      result.insert(0,current)
      i-=1
   # 处理最后一位
   # 如果最后还有进位,需要添加到结果中
   if carry:
      result.insert(0, carry)
   return ''.join(map(str,result))


if __name__ == '__main__':
   a = '11'
   b = '10'
   print(add_binary(a,b))

标签:__,python,求和,carry,二进制,result,计算,字符串,进位
From: https://blog.csdn.net/qingcheng_123456/article/details/137194776

相关文章

  • 山脉数组 python
    ‘’'如果—个数组k符合下面两个属性,则称之为山脉数组数组的长度大于等于3存在i,i>0且i<len(k)-1,使得k[0]<k[1]<…<k[i-1]<k[i]>k[i+1].>k[len(k)-1],这个i就是顶峰索引。现在,给定—个山脉数组,求顶峰索引。‘’’deffind_peak(arr): n=len(arr) ifn<......
  • Python:百度AI开放平台——OCR图像文字识别应用
    一、注册百度AI开放平台使用百度AI服务的步骤为:注册:注册成为百度AI开放平台开发者;创建AI应用:在百度API开放平台上创建相关类型的的AI应用,获得AppID、APIKey和SecretKey;调用API:调用相关类型的API,获得AI功能的结果,为开发者的应用服务。注册的操作步骤:登录百度AI开放平台,百......
  • 学python的第五天
    运算符:算数运算符,比较运算符,逻辑运算符,位运算符,赋值运算符,运算符的优先级1,算术运算符:用于组织整数类型和浮点类型的数据,有一元运算符和二元运算符之分一元运算符,正号(+),负号(-),例如+a还是a,-a是对a的取反运算二元运算符加(+)减(-)乘(*)除(/)取余(%)幂(**)地板除法(//)地板除法(//):a//b......
  • 《Python从入门到实践》项目 数据可视化
    生成数据安装Matplotlibpython-mpipinstallmatplotlib绘制简单的折线图importmatplotlib.pyplotaspltsquares=[1,4,9,16,25]fig,ax=plt.subplots()ax.plot(squares)plt.show()首先导入pyplot模块,并给他指定别名plt,以免反复输入pyplot,然后调用subpl......
  • Python编程快速上手 让繁琐工作自动化 第一部分
      第一章 Python基础**        指数        2**3=8//        整除/商数取整        22//8=2%       取模/取余数数据类型:整型、浮点型、字符串类型可以使用字符串+字符串实现字符串的连接,还可以通过字符创*整型来实现字......
  • QA测试开发工程师面试题满分问答3: python的深拷贝和浅拷贝问题
    在Python中,深拷贝(deepcopy)和浅拷贝(shallowcopy)是用于创建对象副本的两种不同方式。浅拷贝是创建一个新的对象,该对象与原始对象的内容相同(包括内部嵌套对象的引用),但是它们指向相同的内存地址。换句话说,浅拷贝创建了一个对象的表面副本,而不是递归复制所有嵌套对象。当原始对......
  • 11种排序算法(Python实现)
    10种排序算法(Python实现)冒泡排序1、两重循环,每次都将一个点移动到最终位置defBubbleSort(lst):n=len(lst)ifn<=1:returnlstforiinrange(0,n):forjinrange(0,n-i-1):#每轮确定一个点的最终位置iflst[j]>lst[j+1]:......
  • python基础(四)----列表、字典练习题
    好友管理系统请设计一个好友管理系统,每个功能都对应一个序号,用户可根据提示“请输入您的选项”选择序号执行相应的操作,包括:(1)添加好友:用户根据提示“请输入要添加的好友:”输入要添加好友的姓名,添加后会提示“好友添加成功”。(2)删除好友:用户根据提示“请输入删除好友姓名:”输入要删......
  • Python表格处理模块xlrd在Anaconda中的安装
      本文介绍在Anaconda环境下,安装Python读取.xls格式表格文件的库xlrd的方法。  xlrd是一个用于读取Excel文件的Python库,下面是xlrd库的一些主要特点和功能:读取Excel文件:xlrd可以打开和读取Excel文件,并提取其中的数据和元数据。支持多种数据类型:xlrd可以处理包括数字、日......
  • Python列表、字典、元组练习题
    一、将下列姓名长度小于2字符的删除,将写法不同但名字一样的名字合并,并按首字母大写形式输出。names=[‘Bob’,‘JOHN’,‘alice’,‘bob’,‘ALICE’,‘J’,‘Bob’]答案:names=['Bob','JOHN','alice','bob','ALICE','J','Bob']ans={name.title()for......