Zweierkomplement von Zahlen in Python

Ich schreibe Code, der alle 16 Bits negative und positive Zahlen enthält, wobei das MSB das Zeichen ist, das auch als Zweierkomplement bezeichnet wird. Das heißt, die kleinste Zahl, die ich haben kann, ist-32768 welches ist1000 0000 0000 0000 in Zweierkomplementform. Die größte Zahl, die ich haben kann, ist32767 welches ist0111 1111 1111 1111.

Das Problem, das ich habe, ist, dass Python die negativen Zahlen mit der gleichen binären Notation darstellt wie positive Zahlen, wobei nur ein Minuszeichen nach vorne gesetzt wird, d. H.-16384 wird angezeigt als-0100 0000 0000 0000 was ich für eine nummer wie angezeigt bekommen will-16384 ist1100 0000 0000 0000.

Ich bin nicht ganz sicher, wie das codiert werden kann. Dies ist der Code, den ich habe. Wenn die Zahl zwischen 180 und 359 liegt, ist sie im Wesentlichen negativ. Ich muss dies als zwei Komplimentwert anzeigen. Ich habe keinen Code, wie man es anzeigt, weil ich wirklich keine Ahnung habe, wie man es macht.

def calculatebearingActive(i):

    numTracks = trackQty_Active
    bearing = (((i)*360.0)/numTracks)
    if 0< bearing <=179:
        FC = (bearing/360.0)
        FC_scaled = FC/(2**(-16))
        return int(FC_scaled)

    elif 180<= bearing <=359:
        FC = -1*(360-bearing)/(360.0)
        FC_scaled = FC/(2**(-16))
        return int(FC_scaled)

    elif bearing ==360:
        FC = 0
        return FC

Antworten auf die Frage(4)

Ihre Antwort auf die Frage