Я пишу код, который будет иметь отрицательные и положительные числа, все 16 бит в длину, причем MSB является знаком aka two supplement. Это означает, что наименьшее число, которое у меня есть, составляет -32768, которое 1000 0000 0000 0000
в двух дополнительных формах. Наибольшее число, которое у меня есть, - 32767, которое 0111 1111 1111 1111
.
Проблема, с которой я сталкиваюсь, это python, представляющий отрицательные числа с тем же двоичным обозначением, что и положительные числа, просто помещая знак минус перед фронтом, т.е. -16384 отображается как -0100 0000 0000 0000
, что я хочу для отображения для числа, такого как -16384, есть 1100 0000 0000 0000
.
Я не совсем уверен, как это можно закодировать. Это код, который у меня есть. По существу, если число между 180 и 359 будет отрицательным. Мне нужно отобразить это как значение комплимента twos. У меня нет кода о том, как отображать его, потому что я действительно не знаю, как это сделать.
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