Guest User

Untitled

a guest
Oct 22nd, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. def _xor(a, b):
  2. return (not a and b) or (a and not b)
  3.  
  4. def _and(a, b):
  5. return a and b
  6.  
  7. def _or(a, b):
  8. return a or b
  9.  
  10. def calculateSum(bita, bitb, cin):
  11. return _xor(_xor(cin, bita), bitb)
  12.  
  13. def calculateCarry(bita, bitb, cin):
  14. return _or(_and(bita, bitb), _and(cin, _xor(bita, bitb)))
  15.  
  16.  
  17. class BinaryNumber:
  18. def __init__(self, string = None):
  19. self.string = string or ""
  20.  
  21. def at(self, index):
  22. return self.string[index] == '1'
  23.  
  24. def addtobegining(self, booleanvalue):
  25. digit = '1' if booleanvalue else '0'
  26. self.string = digit + self.string
  27.  
  28. def prettyprint(self):
  29. print(self.string)
  30.  
  31.  
  32. while True:
  33. carrybit = False
  34.  
  35. binaryno1 = BinaryNumber(input("Enter binary number 1: "))
  36. binaryno2 = BinaryNumber(input("Enter binary number 2: "))
  37.  
  38. binarysize = 8
  39.  
  40. output = BinaryNumber()
  41. for i in range(binarysize - 1, -1, -1):
  42. x = binaryno1.at(i)
  43. y = binaryno2.at(i)
  44.  
  45. sumoutput = calculateSum(x, y, carrybit)
  46. carrybit = calculateCarry(x, y, carrybit)
  47.  
  48. output.addtobegining(sumoutput)
  49. output.prettyprint()
Add Comment
Please, Sign In to add comment