转换成十进制的时候,浮点数的阶码需要先减去127;
首先明确输入的浮点数是什么格式的:其次明白要输出的定点数又是怎样的,最后两者之间的转换也就明了了:
输入的浮点数是:f[31:0]表示一个单精度32位浮点数,f[31]是符号位,其为‘0’表示正数、为‘1’表示负数;f[30:23]这8位为指数位,为了能表示负指数,将在实际指数的基础上加上127得到的结果存入f[30:23],如上图1所示;f[22:0]表示小数位(尾数),类似科学计数法,不过采用了省略整数位(2进制的科学计数法整数位必定是1)1。那么这个浮点数要转换成定点数,就需要先判断指数位与127的关系,小于127,则说明该指数位是正数,那么转化成定点数的话就需要将{8’d1,float_in[22:0]}右移127-float_in[30:23]位,否则左移float_in[30:23]-127位。
如前面的浮点数转10进制例子,1.10010010000000000000000,阶码算出为100,前面的“1”隐含而来。它是通过{1,float_in[22:0]}左移4位即1.10010010000000000000000左移4位变成11001.0010000000000000000,即11001.001