Fetch the repository succeeded.
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))
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。