题外话:
算法的处理不仅是实现功能,甲方对运算量和存储空间也是有一定要求的;
数字信号处理 最基本的算法有两类: 频谱分析 and 数字滤波;
对原始信号进行 采样 量化 编码 最终会生成一个编码后的数字信号 ;
期间量化精度会影响到 存储空间;
故 引入定点数及其定标 和 浮点数 两种采样的量化精度;
定点数及其定标
传统的 带小数的 二进制和十进制的转换 看下面这张图:

我们标定了一个点作为 b0 , 这一标定行为是由 程序员进行确定的 ;
目前有两种标定方法: Q表示法 and S表示法 ;具体怎么来表示数的可以看下面这张图;

例:
Q0 表示 0个小数,15个整数,1个符号位;
S15.0 表示15个整数 0个小数,一个符号位;
但计算机要读取小数点存在哪里 也是需要一定存储空间的,为了节省存储空间,引入浮点数;
浮点数
IEEE对浮点数有统一的规定;
下面个人对计算机是如何对输进来的十进制数 处理成 浮点数 有困惑, 这是我找的资料 得到得结论, 如有不对,欢迎指正。
和十进制的科学记数法相似,二进制的科学记数法,表达式如下:

看文献里这段这样写,我之前有个疑惑,为什么要这么规定?
后来发现,计算机给你32个空位来表示一个小数,所以IEEE统一规定了这样的一个划分方法,记住就行;
例子:
十进制数: 8.25
二进制表示:1000.01 (快速算:整数8 按16进制的8421 得 1000; 小数部分 0.25 按常识2^-2 得 01)
二进制用科学记数法: 1.00001*2^(往前移3位) 这里的位移数为3,阶码应该是011+01111111 = 10000010
我看文献的时候 感觉这一块最难理解,这是我按自己的方法理解的;
传统的8Bit 存储:
00000000~ 01111111 0 ~ 127
10000000~ 11111111 128~255
因为位移数很可能是负数(右移),所以为了让8Bit的范围以0为中心对称,所以要减127,然后范围变成-127~0~+128间;
即: 存储的二进制值(阶码)-127=位移数; 所以 阶码=位移数+127;
最终十进制的8.25 -----> 二进制科学记数法1.00001*2^10000010
计算机里的单精度浮点数存储 为:
共32位;
符号 | 阶码 | 尾数 |
0 | 10000010 | 00001000000000000000000 |