python 带符号小数 转化为 二进制补码

本文介绍了如何在Python中将(-1, 1)区间内的小数转换为二进制补码,特别是在FFT计算中处理旋转因子时的需求。代码经过测试,精度可控,首位为符号位,其余位表示数值,小数点位于符号位之后。" 127444305,5639970,解析Solidity智能合约struct返回值,"['区块链', '智能合约']
摘要由CSDN通过智能技术生成

     在某些项目中需要将十进制小数转化为二进制补码后进一步处理。例如在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):     
    '''将二进制数转化为补码''&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值