zoukankan      html  css  js  c++  java
  • 关于IEEE745浮点数单精度的学习

    关于5.75  161.875   -0.0234375的单精度浮点数转化.

    原始数字 5.75 161.875 -0.0234375
    转化为二进制 101.11 10100001.111 -0.0000011
    标准化 1.0111*2^2 1.0100001111*2^7 -1.1*2^(6)
    转化  0 10000001 0111 0000 0000 0000 0000 000  0 10000110 0100 0011 1100 0000 0000 000   1 01111001 1000 0000 0000 0000 0000 000

    利用网站检验

    利用Python转化参考https://blog.csdn.net/qq_40890756/article/details/83111431

    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]
    fixedpoint = fixedpoint if str(fixedpoint)[0] == '0' else fixedpoint - 1.0
    return s

    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
    print(floatingPointString)
    return hex( int( floatingPointString , 2 ) )

    print(ConvertToFloat(-5.56))

  • 相关阅读:
    Java Logger 使用总结
    java中用Eclipse打JAR包,包含外部JAR
    安装e(fx)clipse到Eclipse (JavaFX工具)
    肾亏怎么办 下面给你支支招
    汇编cmp比较指令详解
    eclipse安装插件报错Unable to read repository at
    Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
    Java开发桌面程序学习(二)————fxml布局与控件学习
    JavaFX入门(二):JavaFX和FXML
    Apache Tomcat 文件包含漏洞 (CVE20201938) 复现
  • 原文地址:https://www.cnblogs.com/ligaojia/p/13835557.html
Copyright © 2011-2022 走看看