如何在python上进行二进制加法?
我很难正确地将它们添加在一起。我有点碰到了砖墙。我已经转换了它,仅此而已。
我的代码:
选择 | 换行 | 行号
- class BinaryNumber:
- '''A Binary Number Class'''
- #pass
- def __init__(self, bitString = ''):
- '''Constructor'''
- #pass
- self._bits = bitString
- def __str__(self):
- '''string representation'''
- if self._bits:
- return self._bits
- else:
- return '0'
- def __int__(self):
- '''conversion'''
- #pass
- total = 0
- for pos in range(len(self._bits)):
- if self._bits[pos] == '1':
- total += 2 ** (len(self._bits) - 1 - pos)
- return total
- def __add__(self, other):
- '''addition: implementation of the + operator'''
- pass
我也不允许导入数学。
任何帮助将非常感激! :]]
# 回答1
您需要的只是将小数整数转换为二进制。然后你的魔法方法
__添加__
将会:
您需要的只是将小数整数转换为二进制。然后你的魔法方法
__添加__
将会:
选择 | 换行 | 行号
- def __add__(self, other):
- '''addition: implementation of the + operator'''
- return self.dec2bin((int(self)+int(other)))
您是否尝试为此编写代码?
# 回答2
我尝试了使用"导入数学"的类似代码,并尝试将其更改以使其正常工作,但事实并非如此。
这是我现在的项目的所有代码:
我尝试了使用"导入数学"的类似代码,并尝试将其更改以使其正常工作,但事实并非如此。
这是我现在的项目的所有代码:
选择 | 换行 | 行号
- # Program: ex6_18.py
- # Authors: Robert Mineweaser
- #
- # This example is discussed in Chapter 6 of the book
- # Object-Oriented Programming in Python
- #
- class BinaryNumber:
- '''A Binary Number Class'''
- #pass
- def __init__(self, bitString = ''):
- '''Constructor'''
- #pass
- self._bits = bitString
- def __str__(self):
- '''string representation'''
- if self._bits:
- return self._bits
- else:
- return '0'
- def __int__(self):
- '''conversion'''
- #pass
- total = 0
- for pos in range(len(self._bits)):
- if self._bits[pos] == '1':
- total += 2 ** (len(self._bits) - 1 - pos)
- return total
- def __add__(self, other):
- '''addition: implementation of the + operator'''
- #pass
- '''carry = 0
- result = ''
- # Work from right to left.
- for i in range(0, len(self._bits))[::-1]:
- tmp = int(((a[i]) + int(b[i]) + carry)/2)
- res = str(int(a[i]) + int(b[i]) + carry - 2 * tmp)
- result += res
- carry = tmp
- result = (result + str(carry))[::-1]
- try:
- return result[result.index('1'):]
- except ValueError, ex:
- return '0'
- '''
- return self.dec2bin((int(self)+int(other)))
- def __subtract__(self, other):
- '''subtraction: implementation of the - operator''' # Optional
- pass
- def __lt__(self, other):
- '''less: implementation of the < operator'''
- #pass
- if int(a) <= int(b):
- return True
- else:
- return False
- def __gt__(self, other):
- '''great: implementation of the > operator'''
- #pass
- if int(a) >= int(b):
- return True
- else:
- return False
- def __eq__(self, other):
- '''equal: implementation of the = operator'''
- #pass
- if int(a) == int(b):
- return True
- else:
- return False
- if __name__ == '__main__':
- a = BinaryNumber('01111001') # binary numbers must start with 0
- b = BinaryNumber('00110101') # a = 121, b = 53
- print 'a = ', a, int(a)
- print 'b = ', b, int(b)
- print 'a + b', a + b, int(a + b)
- #print 'a - b', a - b, int(a - b) # optional
- print 'a < b', a < b
- print 'a > b', a > b
- print 'a == b', a == b
- print 'Press the Enter key to finish'
- raw_input()
如果您不知道,减法是可选的,我评论了我尝试更改以进行工作的代码。关于我可以采取的措施解决此问题的任何建议。
# 回答3
功能DEC2BIN()将是类方法。查看
这个线程
。
# 回答4
好吧。将其添加在一起后,我需要输出将其显示为" A + B(二进制结果)(十进制结果)。如何使其将它们添加在一起并显示出两者的结果?
好吧。将其添加在一起后,我需要输出将其显示为" A + B(二进制结果)(十进制结果)。如何使其将它们添加在一起并显示出两者的结果?
# 回答5
修改__ADD__返回的字符串,并使用字符串格式。未经测试:
修改__ADD__返回的字符串,并使用字符串格式。未经测试:
选择 | 换行 | 行号
- return "%s + %s (%s) (%s)" % (self, other, self.dec2bin((int(self)+int(other))), (int(self)+int(other)))
# 回答6
我仍然有点困惑。我需要做的就是将2个二进制数添加在一起,并使输出为" A + B(二进制结果)(十进制结果)"。 conversion依是给我十进制的结果。那么,如何将所有内容添加在一起以获得给定的输出" A + B(二进制结果)(十进制结果)"?如果您不明白我要问什么,请随时告诉我。
这是我的原始代码" __ADD__",没有我的任何添加:
我仍然有点困惑。我需要做的就是将2个二进制数添加在一起,并使输出为" A + B(二进制结果)(十进制结果)"。 conversion依是给我十进制的结果。那么,如何将所有内容添加在一起以获得给定的输出" A + B(二进制结果)(十进制结果)"?如果您不明白我要问什么,请随时告诉我。
这是我的原始代码" __ADD__",没有我的任何添加:
选择 | 换行 | 行号
- class BinaryNumber:
- '''A Binary Number Class'''
- #pass
- def __init__(self, bitString = ''):
- '''Constructor'''
- #pass
- self._bits = bitString
- def __str__(self):
- '''string representation'''
- if self._bits:
- return self._bits
- else:
- return '0'
- def __int__(self):
- '''conversion'''
- #pass
- total = 0
- for pos in range(len(self._bits)):
- if self._bits[pos] == '1':
- total += 2 ** (len(self._bits) - 1 - pos)
- return total
- def __add__(self, other):
- '''addition: implementation of the + operator'''
- pass
- def __subtract__(self, other):
- '''subtraction: implementation of the - operator''' # Optional
- pass
- def __lt__(self, other):
- '''less: implementation of the < operator'''
- #pass
- if int(a) <= int(b):
- return True
- else:
- return False
- def __gt__(self, other):
- '''great: implementation of the > operator'''
- #pass
- if int(a) >= int(b):
- return True
- else:
- return False
- def __eq__(self, other):
- '''equal: implementation of the = operator'''
- #pass
- if int(a) == int(b):
- return True
- else:
- return False
- if __name__ == '__main__':
- a = BinaryNumber('01111001') # binary numbers must start with 0
- b = BinaryNumber('00110101') # a = 121, b = 53
- print 'a = ', a, int(a)
- print 'b = ', b, int(b)
- print 'a + b', a + b, int(a + b)
- #print 'a - b', a - b, int(a - b) # optional
- print 'a < b', a < b
- print 'a > b', a > b
- print 'a == b', a == b
- print 'Press the Enter key to finish'
- raw_input()
# 回答7
在此线程中查看我的第一篇文章。
在此线程中查看我的第一篇文章。
# 回答8
是的,但是即使我把它放进去,我也会遇到一个错误," attributeError:binarynumber实例没有属性'dec2bin'"。我必须如何制作此代码才能使其正确添加二进制数字,并为我提供输出," A + B(二进制结果)(十进制结果)"?
是的,但是即使我把它放进去,我也会遇到一个错误," attributeError:binarynumber实例没有属性'dec2bin'"。我必须如何制作此代码才能使其正确添加二进制数字,并为我提供输出," A + B(二进制结果)(十进制结果)"?
# 回答9
您必须添加二进制方法DEC2BIN()。该方法必须返回转换为二进制的小数号。
您必须添加二进制方法DEC2BIN()。该方法必须返回转换为二进制的小数号。
# 回答10
这是唯一的方法吗?还是有另一种可能的方式?如果没有,我该怎么做?
这是唯一的方法吗?还是有另一种可能的方式?如果没有,我该怎么做?
# 回答11
那就是我这样做的方式,因为这对我来说是最简单的。不过还有其他方法。您可以编写代码以在方法中进行二进制加法和减法
__添加__()
和
__SUB __()
分别。查看
这个网站
。
# 回答12
我了解二进制添加的概念,但是我很难将其放入代码中。我将如何在方法中编写二进制代码
__添加__
?
我了解二进制添加的概念,但是我很难将其放入代码中。我将如何在方法中编写二进制代码
__添加__
?
# 回答13
对不起,我无法为您编写代码。请自己展示一些努力,然后我们可以提供帮助。由于您了解二进制添加的概念,因此您可能比我了解更多。
即使您添加了二元添加,我也 NK代码应进入单独的函数。
对不起,我无法为您编写代码。请自己展示一些努力,然后我们可以提供帮助。由于您了解二进制添加的概念,因此您可能比我了解更多。
即使您添加了二元添加,我也 NK代码应进入单独的函数。
# 回答14
你好 在我看来,由于您正在实施自己的版本,因此您不妨在二进制中进行添加。 如果我没记错的话,您的Bortstring只是1s和0s的字符串? 因此,我首先要实现在给定位置返回单个数字的东西。 就像是:
选择 | 换行 | 行号
- def binDigit[self,position]:
- if position>len(self._bits):
- return 0
- else:
- return self._bits[-position]
如果self._bits =" 101",则位置[1] = 1,位置[2] = 0,位置[3] = 1和位置[4] = 0等。 现在创建一些可以添加一点的东西(从字面上看!):
选择 | 换行 | 行号
- def __add__[self,other]:
- v=max([len(self._bits),len(other._bits)])+1
- ans=''
- carry=0
- for i in range(1,v+1):
- a=self.position(i)
- b=self.position(i)
- t=carry+int(a)+int(b)
- if t<=1:
- carry=0
- else:
- carry=1
- if t%2==0:
- ans='0'+ans
- else:
- ans='1'+ans
- return BinaryNumber(ans)
我尚未检查任何内容,但应该给您一些想法。
标签: python