浮点转定点是个比较基础的知识点吧,所以作为开篇,简单的举几个小例子,通过例子,相信大家都能掌握它。
简单说明一下,浮点包括 符号位|指数位|小数位。浮点的类型包括 单精度浮点数|双精度浮点数。这里用到的是单精度浮点数。单精度浮点数:1位符号位,8位指数位,23位尾数位。也有说是24位尾数位,这里笔者认为这样划分,更便于说明(我的地盘听我的,嘿嘿)。
浮点转定点的步骤如下:a)将浮点数划分 符号位|指数位|小数位;
b)计算指数位与偏差位的值;单精度浮点数的偏差值固定为127.
c)计算并得到定点数。
看例子:
例1:
A = 01000000.010000000000000000000000
划分如下:0 10000000 10000000000000000000000
符号位=0,即为正
指数位=128,偏差值=127,指数位-偏差位=1
尾数位为1 意味着实际尾数为1.1,包括小数点前面隐藏的1
所以实际的实数为 +1.1*21=(21 + 2-1*21) = 3
再举个例子,例子2:
B = 01000000.101000000000000000000000
划分如下:0 10000001 01000000000000000000000
符号位=0,即为正
指数位=129,偏差值=127,指数位-偏差位=2
尾数位为01 意味着实际尾数为1.01,包括小数点前面隐藏的1
所以实际的实数为 +1.01*22=(22 + 2-2*22) = 5
到了这里,相信大家基本掌握了单精度浮点转定点的方法,接下来的两篇计划介绍矩阵乘法以及LU矩阵分解。由于保密性,里面的内容都是可以公开的。
连接到下一篇《矩阵系列之矩阵乘法》