浮点数和二进制之间的转换

目录 Content
[hide]

目的

在工业控制领域,设备间的的IO交换基本上是以bit为基础,这样设备间交换整型数据一般没有问题,但是如果要交换浮点数,其中一方的设备如果没有转换方法就会颇费周折。

背景

关于浮点数的存储,可以借鉴现有的工具来研究。如 -28.75:

-28.75

  1. 首先定符号位 bit31: 1
  2. 将28.75转化为二进制表示11100.11。具体过程是,整数部分28转化为二进制为11100,小数部分0.75乘以2,取1,余0.5,乘以2取1,余0结束。
  3. 将11100.11表示为科学计数法,即1.110011*2^4,指数为4个,尾数为110011,即为bit22~bit0的内容
  4. 所以指数位为 127+4=131,转化为 二进制为 10000011,即为 bit30~23的内容。

那么反过程呢,拿到二进制串 11000001111001100000000000000000

  1. bit31为1,所以为负数,加“-”符号
  2. 取bit30~bit23内容 10000011 ,转化为十进制为131,减去127得 4
  3. 得到二进制的科学计数法 1.110011*2^4,将小数点移动4个位置,得到 11100.11
  4. 取整数部分为 11100,转化为十进制为 28
  5. 取小数部分 1*2^(-1)+1*2^(-2) 为 0.75
  6. 那么总的就是 -28.75

 

扩展阅读

Leave a Reply

Your email address will not be published. Required fields are marked *