在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11609|回复: 5

请教一个浮点数转换成定点数的问题!

[复制链接]
发表于 2008-7-22 21:08:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教一个浮点数转换成定点数的问题:

输入是一个24位的ieee754标准的浮点数,格式是1_8_15,已经直接去掉了最后8位, 如何把它转换成格式为 1_22_8 的定点数? (定点数 整数22位,小数8位)


因为用的 design ware, 有个模块叫 "flt2i", 可以把浮点数换成整数, 但是小数部分怎么办呢? 不能用别的浮点运算器.

苦闷了好几天了,请教各位~~~~
 楼主| 发表于 2008-7-24 11:24:14 | 显示全部楼层
求助~
发表于 2008-7-24 21:30:16 | 显示全部楼层
根据IEEE 745: 如 11 = 8 + 2 + 1 = 1011b  = 1.011x2^3  
step 1:  1_00000101_1110_0000_0000_000
step 2:   1_10000010_0110_0000_0000_000    说明:此时将Exponent做127的offset,同时将整数位的1省略掉只剩下Fraction。

所以在做浮点数到定点数的变化时,首先将8it Exponent减掉offset(127),然后将 15bit Fraction 补足整数位1
然后根据定点数和浮点数的差值,对 Fraction 做位移运算。。不足位补“0”。

[ 本帖最后由 Moore 于 2008-7-24 23:15 编辑 ]
发表于 2008-7-25 09:43:39 | 显示全部楼层

搜罗



IEEE754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S (sign),指数部分E (exponent) 和尾数部分M (mantissa)。

浮点数一般采用以下四种基本格式:

(1)单精度格式(32位):除去符号位1位后,E占8位,M占23位。

(2)扩展单精度格式:E>=11位,M>31位。

(3)双精度格式:(64位);E=11位,M=52位。

(4)扩展双精度格式:E>=15位,M>63位。

我 们最重要的是掌握单精度格式的表示法。在IEEE754标准中,约定小数点左边隐含有一位,通常这位数就是1,这样实际上使尾数的有效位数为24位,即尾 数为1.M。指数的值在这里称为阶码,为了表示指数的正负,所以阶码部分采用移码表示,移码值为127,阶码值即从1到254变为-126至+127,在 IEEE754中所有的数字位都得到了使用,明确地表示了无穷大和0,并且还引进了"非规格化数"                                     denormalized numbers (also called subnormal numbers)
,使得绝对值较小的数得到更准确表示。请看下表:

S(1位)     E(8位)         M(23位)     N(32位)  
符             0                 0            (-1)S·2E-127·(1.M) 为规格化数                                    
                0              不等于0      (-1)S·2-126·(0.M) 为非规格化数
号        1到254之间      不等于0     (-1)S·2E-127·(1.M) 为规格化数
               255             不等于0       NaN(非数值)
位            255                 0            无穷大  

其中红色字0、1表示隐含位,注意当数字N为非规格化数或是0时,隐含位是0

以单精度为例子,我们知道指数有 8 位,可以表示 2^8=256 (0, 1, 2, ..., 255) 个数,但是最小的 e_min =-126, 最大e_max = 127, 只有 127+126+1=254 个数, 另外两个数用来干什么呢?
用来表示零和无穷大,请参考下面的表. 当 e = e_min -1 时,用来表示零,(零还有正负之分);
当 e=e_max +1 时, 用来表示正负无穷大。 为什么零不是真正的零呢?因为 IEEE 754 标准约定小数点左边隐含有一位,而且这隐含的一位的数值对于规格数而言是1,对于非规格数而言是0.


                               
登录/注册后可看大图


看起来双精度浮点数的范围很大,但是 171 的阶乘约是 1.24E10^309 已经比双精度能表示的最大的浮点数大。

The largest number that can be represented is approximately 2.0 · 2127 ≈ 3.4028 × 10^38 in single precision and 2.0 · 21023 ≈1.7977 × 10^308 in double precision. The smallest normalized number is 1.0 · 2−126 ≈1.1755 × 10^ −38 in single precision and 1.0 · 2^−1022 ≈ 2.2251 × 10^−308 in double
precision.

Unit roundoff error : 1 和某个数相加用浮点数表示还等于1, 则这个数称位 Unit roundoff error.
Unit roundoff error 是    2^−24 ≈ 5.96 · 10^−8 , in single precision;
   2^−53 ≈ 1.11 · 10^−16 in double precision.
发表于 2008-7-25 09:45:49 | 显示全部楼层

搜罗

IEEE 754标准在表示浮点数时,每个浮点数均由三部分组成:符号位S,指数部分E和尾数部分M.S=0表示正数,S=1表示负数.
浮点数一般采用以下四种基本格式:
单精度格式(32位):除去符号为1位后,E占8位,M占23位.
扩展单精度格式:E>=11位,M=31位
双精度格式64位):E>=11位,M=52位.
扩展双精度格式:E>=15位,M>63位.
在IEEE 745标准中,约定小数点左边隐含有一位,通常这次数就是1,这样实际上使尾数的有效位数为24位,即尾数为1.M.指数的值在这里称为阶码,为了表示指数的正负,所以阶码部分采用移码表示,移码值为127(注意这是IEEE 754指定的单精度的偏移量,而不是指移码的偏移量为128),阶码值即从1到254变为-126至-126至127,在IEEE 754中所有的数字位都得到了使用.
(1)0.15625转换成二进制值为0.00101
在IEEE 754中规格化表示为1.01X2^(-3)(这里的-3表示小数点向右移动了3位),所以e=127+(-3)=124
IEEE 754编码为:0 01111100 01000000000000000000000
(2)-5转换成二进制值为-101
在IEEE 754中规格化表示为1.01X2^2,e=127+2=129
IEEE 754编码为: 1 10000001 0100000000000000000000

说明:这里的尾数是指0.1X2^M次方,即为所用格式的M的位数,eg:单精度格式中M占23位,得出结构中0.1X2^23次方化成二进制数为0100000000000000000000
 楼主| 发表于 2008-7-26 11:49:21 | 显示全部楼层
看来还真不简单,谢谢楼上各位的资料!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-16 15:33 , Processed in 0.021527 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表