如果我以二进制形式将2个数字作为一个字符串,并且我想添加它们,我会从最右端逐个数字地完成它。所以001 + 010 = 011 但是假设我必须做001 + 001,我应该如何创建一个代码来弄清楚如何进行结转回应?需要帮助,在python中添加二进制数字
7
A
回答
21
bin
和int
是非常有用的位置:
a = '001'
b = '011'
c = bin(int(a,2) + int(b,2))
# 0b100
int
允许您指定的第一个参数是一个字符串转换时(在这种情况下,两个)在什么基础,bin
将数字转换回二进制字符串。
2
如果通过int
解析字符串(显示在另一个答案中),可以很简单。这里是一个幼儿园校数学方式:
>>> def add(x,y):
maxlen = max(len(x), len(y))
#Normalize lengths
x = x.zfill(maxlen)
y = y.zfill(maxlen)
result = ''
carry = 0
for i in range(maxlen-1, -1, -1):
r = carry
r += 1 if x[i] == '1' else 0
r += 1 if y[i] == '1' else 0
# r can be 0,1,2,3 (carry + x[i] + y[i])
# and among these, for r==1 and r==3 you will have result bit = 1
# for r==2 and r==3 you will have carry = 1
result = ('1' if r % 2 == 1 else '0') + result
carry = 0 if r < 2 else 1
if carry !=0 : result = '1' + result
return result.zfill(maxlen)
>>> add('1','111')
'1000'
>>> add('111','111')
'1110'
>>> add('111','1000')
'1111'
2
下面是一个简单易懂的版本
def binAdd(s1, s2):
if not s1 or not s2:
return ''
maxlen = max(len(s1), len(s2))
s1 = s1.zfill(maxlen)
s2 = s2.zfill(maxlen)
result = ''
carry = 0
i = maxlen - 1
while(i >= 0):
s = int(s1[i]) + int(s2[i])
if s == 2: #1+1
if carry == 0:
carry = 1
result = "%s%s" % (result, '0')
else:
result = "%s%s" % (result, '1')
elif s == 1: # 1+0
if carry == 1:
result = "%s%s" % (result, '0')
else:
result = "%s%s" % (result, '1')
else: # 0+0
if carry == 1:
result = "%s%s" % (result, '1')
carry = 0
else:
result = "%s%s" % (result, '0')
i = i - 1;
if carry>0:
result = "%s%s" % (result, '1')
return result[::-1]
4
这将接受任意数量或参数:
def bin_add(*args): return bin(sum(int(x, 2) for x in args))[2:]
>>> bin_add('1', '10', '100')
'111'
相关问题
- 1. 需要二进制plists的帮助
- 2. 需要帮助才能从pickle中提取二进制数据
- 3. 需要帮助Python函数
- 4. Python - 需要帮助
- 5. 需要Python帮助
- 6. 使用二进制搜索查找列表中的数字需要帮助
- 7. 需要帮助在Python 3
- 8. 在Python上需要帮助
- 9. 需要帮助的在Python
- 10. 需要帮助加入第二台
- 11. Python noob,需要帮助改进方案
- 12. 在C++中添加二进制数字
- 13. 需要帮助将NSURL字符串添加到数组中
- 14. Python TKinter Threading帮助需要的帮助
- 15. 需要帮助编译mkbootimg二进制对于Android
- 16. 需要帮助解决二进制搜索
- 17. 需要帮助调试哪些更新的二进制文件
- 18. 解析二进制文件需要的帮助
- 19. sql加入进一步需要帮助
- 20. 二进制字符矩阵帮助
- 21. 在Python编程中需要PowerShell帮助
- 22. 我需要帮助添加第二个纹理glSurfaceView
- 23. 帮助需要从URL添加图片!
- 24. 需要帮助添加过期标头
- 25. Python分割字符串。需要帮助
- 26. 需要python的井字问题帮助
- 27. Django的python帮助需要
- 28. 需要Python/Apache帮助
- 29. 的Python:需要帮助
- 30. Python UnboundLocalError“需要帮助”
你有什么尝试过 至今?你应该记录你的一些尝试,以免提早结束这个问题。 – jww