引用 305456779 在 2015/11/11 11:35:06 发言【内容省略】
最高位31位那是符号位,0代表正数然后100 0000 1 (23~30位)为整数部分,他代表的是一个偏移量,转换为10进制就是129,减去127就是2.
110 1100 1100 1100 1101 代表小数位:
从左到右分别是2的-1次方.....2的-23次方,现在就是0.5+0.25+0.0625+....
然后将上面的小数部分+1.0,就得到了1.8125(当然不够准确,因为后面我没有算下去)
然后将1.8125去乘以上面算下来的偏移量,2的2次方就是4.
算法就是:
首先通过与操作,将23~30位的数据取出,然后右移23位,减去127,结果保留备用。
然后通过与操作指令,将0~22位的数据取出。
使用循环指令,计算小数部分的和
将小数部分+1.0构成最终的值,然后乘以2的偏差值次方(偏差就是上面第一步算出的)
最后使用与指令来提取符号位,判断正负,如果是负的,将上面算的乘以-1.0就可以了。
如果使用ST语言编程的话,大概在20行左右的程序。