使用简单的二进制加法器的困难

时间:2014-02-21 14:02:28

标签: python binary

我正在尝试使用python添加2个二进制数字,但我无法弄清楚如何制作一个非常简单的程序来完成它。这是我到目前为止所得到的,但它不起作用:

b=input("what number would you like to add ")
convert1= lambda b: str(int(b, 2))

a=input("what number would you like to add to it ")
convert= lambda a: str(int(a, 2))

c=(b+a)
print (c)
convert=lambda c: str(int(c, 2))
print ("Your binary numbers added together is" + convert(c))

我的意思是不工作就是说如果我尝试添加1001和1001它会说答案是10011001.这是错误的。

有人可以解释为什么这不起作用以及其他任何简单的方法。

4 个答案:

答案 0 :(得分:2)

没有“添加二进制”这样的东西 - 当你添加两个整数时,它们的基数是无关紧要的。整数的 base 只是在文本上表示它时的便利。因此,你真正想要的是定期添加两个整数,然后然后将结果转换为二进制(也可能以二进制形式显示两个输入)。例如:

>>> a = 5  # input 1
>>> b = 3  # input 2
>>> 
>>> bin(a)
'0b101'
>>> bin(b)
'0b11'
>>> 
>>> bin(a + b)
'0b1000'

原样,您的ab是字符串,因此c=(b+a)也会通过连接ab来生成字符串。

如果您希望读取您的输入为二进制字符串,那么您可以在执行添加之前将它们简单地转换为整数:

>>> a = '101'
>>> b = '011'
>>> 
>>> bin(int(a,2) + int(b,2))
'0b1000'

答案 1 :(得分:0)

看起来你要在一起添加两个字符串; “1001”+“1001”等于“10011001”。

答案 2 :(得分:0)

您正在尝试添加2个字符串!因此产生了连接。

编辑:似乎您希望输入也是二进制文件。

num1 = input("what number would you like to add ")
a = int(num1, 2)

num2 = input("what number would you like to add to it ")
b = int(num2, 2)

ans = bin(a+b)
print("Your addition of numbers, in binary is " + ans)

以上将给出10&的总和。 1'0b11'。但是,如果您只想打印'11',则必须使用

ans = bin(a+b)[2:]

答案 3 :(得分:0)

只需使用bin(int()),请参阅http://docs.python.org/2/library/functions.html#bin

x = raw_input("what number would you like to add ")
print x,'is',bin(int(x)),'in binary'
y=raw_input("what number would you like to add to it ")
print y, 'is',bin(int(y)),'in binary'
print
print 'their sum in binary is',bin(int(x+y))

<强> [OUT]:

$ python test.py
what number would you like to add 123
123 is 0b1111011 in binary
what number would you like to add to it 456
456 is 0b111001000 in binary

their sum in binary is 0b11110001001000000