【问题标题】:Python - IEEE754 32bit to Microchip 32bit converterPython - IEEE 754 32 位到 Microchip 32 位转换器
【发布时间】:2016-09-18 10:40:18
【问题描述】:

这是我在这个网站上的第一个问题。 我需要将 Microchip 32 位十六进制数转换为 IEEE754 32 位十六进制数。 这两种格式的区别:

Microchip = exponent + sign + fraction

IEEE 754 = sign + exponent + fraction

要在格式之间进行转换,应该对前 9 位进行循环移位。
问题是如何在 Python(2.7) 中做到这一点?

例子:

0x833C0000 -> 0b10000011 00111100 00000000 00000000  Microchip 32bit, 

0x41BC0000 -> 0b01000001 10111100 00000000 00000000  IEEE754 32bit

【问题讨论】:

    标签: rotation shift


    【解决方案1】:

    解决方案很简单,打印在下面:

    def formatHex( val ):
       return format( val, '#04x' )
    
    def microchip32_2_ieee754( m32 ):
       sign = (1 << 31) if m32 & (1 << 23) else 0
       expoent = ( m32 & 0xFF000000 ) >>  1
       return  expoent + sign + (m32 & 0x007FFFFF)
    
    def ieee754_2_microchip32( ieee ):
       sign = (1 << 23) if ieee & (1 << 31) else 0
       expoent = ( ieee & 0x7F800000 ) <<  1
       return  expoent + sign + (ieee & 0x007FFFFF)
    
    if __name__ == "__main__":
    
       m32 = 0x833C0000;
    
       print "Microchip 32: ", formatHex( m32 )
       print "IEEE 754: ", formatHex( microchip32_2_ieee754( m32 ) )
       print "Microchip 32: ", formatHex(
                                  ieee754_2_microchip32(
                                     microchip32_2_ieee754( m32 ) ) )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2010-12-12
      相关资源
      最近更新 更多