use*_*406 11 python twos-complement
我编写的代码将包含所有16位长的负数和正数,MSB是符号,也就是二进制补码.这意味着我可以拥有的最小数字是-32768,它是1000 0000 0000 0000二进制补码形式.我可以有最大数量是32767是0111 1111 1111 1111.
我遇到的问题是Python是用相同的二进制记数法表示负数为正数只是把一个减号出前即-16384显示为-0100 0000 0000 0000我所要显示的数字,如-16384是1100 0000 0000 0000.
我不太清楚这是如何编码的.这是我的代码.基本上,如果数字在180到359之间,那么它将是负数.我需要将其显示为两个恭维值.我没有关于如何显示它的任何代码,因为我真的不知道该怎么做.
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
Run Code Online (Sandbox Code Playgroud)
如果你正在做类似的事情
format(num, '016b')
Run Code Online (Sandbox Code Playgroud)
要将您的数字转换为二进制补码字符串表示,您需要在对其进行字符串化之前实际采用负数的二进制补码:
format(num if num >= 0 else (1 << 16) + num, '016b')
Run Code Online (Sandbox Code Playgroud)
或者拿它mod 65536:
format(num % (1 << 16), '016b')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13168 次 |
| 最近记录: |