代码拉取完成,页面将自动刷新
def ConvertFixedIntegerToComplement(fixedInterger) :                                                                    #浮点数整数部分转换成补码(整数全部为正)
    return bin(fixedInterger)[2:]
def ConvertFixedDecimalToComplement(fixedDecimal) :                                                                     #浮点数小数部分转换成补码
    fixedpoint = int(fixedDecimal) / (10.0**len(fixedDecimal))
    s = ''
    while fixedDecimal != 1.0 and len(s) < 23 :                                                                         #小数转换成二进制的方法
        fixedpoint = fixedpoint * 2.0
        s += str(fixedpoint)[0]                                                                                         #这里是取小数乘2所得结果转换成的字符串的第一个索引对应的字符
        fixedpoint = fixedpoint if str(fixedpoint)[0] == '0' else fixedpoint - 1.0                                      #补0或者有1就取1
    return s                                                                                                            #返回所得字符串s(直到s字符串长度等于23后停止循环)
def ConvertToExponentMarker(number) :                                                                                   #阶码生成(中间部分)
    return bin(number + 127)[2:].zfill(8)
def ConvertToFloat(floatingPoint) :                                                                                     #转换成IEEE754标准的数
    floatingPointString = str(floatingPoint)
    if floatingPointString.find('-') != -1 :                                                                            #判断符号位
        sign = '1'
        floatingPointString = floatingPointString[1:]
    else :
        sign = '0'
    l = floatingPointString.split('.')                                                                                  #将整数和小数分离
    front = ConvertFixedIntegerToComplement(int(l[0]))                                                                  #返回整数补码
    rear  = ConvertFixedDecimalToComplement(l[1])                                                                       #返回小数补码
    floatingPointString = front + '.' + rear                                                                            #整合
    relativePos =   floatingPointString.find('.') - floatingPointString.find('1')                                       #获得字符1的开始位置
    if relativePos > 0 :                                                                                                #若小数点在第一个1之后
        exponet = ConvertToExponentMarker(relativePos-1)                                                                #获得阶码
        mantissa =  floatingPointString[floatingPointString.find('1')+1 : floatingPointString.find('.')]  + floatingPointString[floatingPointString.find('.') + 1 :] # 获得尾数
    else :
        exponet = ConvertToExponentMarker(relativePos)                                                                  #获得阶码
        mantissa = floatingPointString[floatingPointString.find('1') + 1: ]                                             #获得尾数
    mantissa =  mantissa[:23] + '0' * (23 - len(mantissa))
    floatingPointString = '0b' + sign + exponet + mantissa
    return floatingPointString
x = input("请输入一个需要转换的浮点数:")
print(ConvertToFloat(x))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
 马建仓 AI 助手
马建仓 AI 助手