2016-04-01 3 views
-1

Ich versuche eine Python-Funktion schreiben, die zwei ganze Zahlen und eine Anzahl von Bits dauert. Die Funktion fügt die zwei Zahlen innerhalb der angegebenen Anzahl von Bits zusammen. Es druckt dann die Addition der zwei Zahlen und zeigt die Antwort wie in den folgenden Beispielen. Es muss auch das Wort "stackoverflow" gedruckt werden, wenn die Addition in der angegebenen Anzahl von Bits die Überlaufbedingung verursacht.Python Überlauf hinzufügen

add_overflow (1, -1, 2) ergibt 01 + 11 = 00

und add_overflow (1, 1, 2) führt zu 01 + 01 = 10 Überlauf

+0

Zeigen Sie etwas Versuch. Beachten Sie, dass nicht alle Integer-Typen da draußen signiert werden müssen, also seien Sie vorsichtig, um das zu qualifizieren. – roadrunner66

Antwort

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 

Dies setzt voraus dass die Zahlen signiert würden (basierend auf dem Beispiel, das Sie angegeben haben). Wenn Ihre Nummern nicht signiert sind, verwenden Sie result > rangeMax.

Wenn das Dienstprogramm nur einen Überlauf erwähnen und die Daten nicht auf n Bits beschränken soll, können Sie den Mod-Teil aus dem Ergebnis löschen. return str(result) + " stackoverflow"

Wenn Sie das Endergebnis in binären wollen (nicht sicher, warum) Sie tun können return "{0:b}".format(result) + "overflow"