在某些项目中需要将十进制小数转化为二进制补码后进一步处理。例如在FFT中,旋转因子的在[-1,1]之间,butterfly计算结果需要乘旋转因子的值,所以首先将其转化为二进制补码。
本文仅仅只针对在(-1,1)之间小数处理,对于端点值 -1 和 1 需要单独处理
代码如下:
def decimal_to_binary(num,prec= 5):
'''#将小数转化为二进制数'''
str_bin = ''
if num < 0:
str_bin += '1'
else:
str_bin += '0'
count = 1
num = abs(num)
while(count < prec):
if int(num*2) == 1:
str_bin += '1'
num = num*2 - int(num*2)
else:
num *= 2
str_bin += '0'
count += 1
return str_bin
test = decimal_to_binary(-0.7158203125,11) #0.7158203125=======11011011101
print(test)
def true_to_complement(str):
'''将二进制数转化为补码''&#