我试图编写一个Python函数,它需要两个整数和一些位。该函数在指定的位数内将两个数字相加。然后打印两个数字的加法并显示答案,如下面的示例所示。它还必须打印单词" stackoverflow"如果指定位数的加法导致溢出条件。
add_overflow(1,-1,2)导致01 + 11 = 00
和add_overflow(1,1,2)导致01 + 01 = 10溢出
答案 0 :(得分:0)
def add_overflow(a,b,num_bits):
rangeMax = 2**(num_bits - 1) # unsigned range
result = a + b
if result >= rangeMax:
return str((result) % rangeMax) + "stackoverflow"
else:
return result
这假定数字将被签名(基于您给出的示例)。如果您的号码未签名,请使用result > rangeMax
。
如果您希望该实用程序只提及溢出而不是将数据限制为n位,则可以从结果中删除mod部分。 return str(result) + " stackoverflow"
如果您希望最终结果为二进制(不确定原因),您可以执行return "{0:b}".format(result) + "overflow"