声明:题目出自《剑指Offer》。算法原理请自行找书撸, 不废话。直接上Python版本代码。
题目一:给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。
#不应该使用递归,效率太低 import random lst = random.sample(range(1,100),2) x,y = lst while y != 0: x,y = x^y,(x&y)<<1 else: print("{} + {} = {}".format(lst[0],lst[1],x))
题目二:计算二进制中1的个数。
import random number = random.randint(1,100) print("number:{} binary:{} ".format(number,bin(number))) count = 0 while number != 0: number,count = (number-1)&number, count + 1 else: print(count)