2016-03-28 15 views
0

Für unsere Hausaufgabenzuordnung werden wir aufgefordert, eine Ganzzahl aufzunehmen und die Zweierkomplemente davon zurückzugeben.Konvertieren einer binären Zeichenfolge in ein Zweierkomplement

Derzeit kann ich die ganze Zahl in eine binäre Zeichenfolge konvertieren. Von dort weiß ich, dass ich die 0 und 1 invertieren muss und 1 zu der neuen Zeichenfolge hinzufügen muss, aber ich weiß nicht, wie das geht.

Könnte mir bitte jemand dabei helfen?

def numToBinary(n): 
    '''Returns the string with the binary representation of non-negative integer n.''' 
    result = '' 
    for x in range(8): 
     r = n % 2 
     n = n // 2 
     result += str(r) 

    result = result[::-1] 
    return result 

def NumToTc(n): 
    '''Returns the string with the binary representation of non-negative integer n.''' 
    binary = numToBinary(n) 
    # stops working here 
    invert = binary 
    i = 0 
    for digit in range(len(binary)): 
     if digit == '0': 
      invert[i] = '1' 
     else: 
      invert[i] = '0' 
     i += 1 
    return invert 

Hinweis: Dies ist ein Intro Level-Kurs, so sind wir in erster Linie stecken loops und recursion zu verwenden. Wir können nicht wirklich irgendwelche ausgefallenen Formatierungen von Strings, eingebauten Funktionen usw. jenseits der Grundlagen verwenden.

+1

Da es sich um einen Auftrag - ich glaube, ich nur einen Tipp geben kann. Suchen Sie im PHP-Handbuch nach Ihren binären Operationen. Verwenden Sie das Online-Handbuch. Einer von ihnen wird dir sagen, wie das geht. –

+0

Auf dem Risiko, die Aufgabe wegzugeben, beachten Sie, dass Python einige sehr nützliche [bitweise Operatoren] definiert (https://wiki.python.org/moin/BitwiseOperators) ... –

+0

lassen Sie mich raten, Sie haben ein 'TypeError: 'str' Objekt unterstützt keine Artikelzuweisung, oder? Bitte geben Sie die Fehlermeldungen an, die Sie beim Veröffentlichen der Frage erhalten. Dadurch ist es ** viel einfacher, Sie bei Ihrem eigentlichen Problem zu unterstützen. –

Antwort

0

konnte ich meine Lösung, indem Sie folgendes erreichen:

def numToBinary(n): 
    '''Returns the string with the binary representation of non-negative integer n.''' 
    result = '' 
    for x in range(8): 
     r = n % 2 
     n = n // 2 
     result += str(r) 

    result = result[::-1] 
    return result 

def NumToTc(n): 
    '''Returns the string with the binary representation of non-negative integer n.''' 
    binary = numToBinary(n) 
    for digit in binary: 
     if int(digit) < 0: 
      binary = (1 << 8) + n 
    return binary 
+0

@Liongold Ich bin nicht ganz sicher, ob ich folge. Können Sie mir bitte ein Beispiel zeigen, wenn es Ihnen nichts ausmacht? – jape

+0

Macht nichts, ich habe mich geirrt. –

Verwandte Themen