【DSP】定点数(定标)and浮点数

文章探讨了在数字信号处理中,算法不仅要实现功能,还需考虑运算量和存储需求。重点讲述了定点数(Q表示法和S表示法)与浮点数的概念,以及IEEE对浮点数的标准规定,包括如何将十进制数转换为二进制科学记数法,并详细解释了浮点数的存储方式。
摘要由CSDN通过智能技术生成

题外话:

算法的处理不仅是实现功能,甲方对运算量和存储空间也是有一定要求的;

数字信号处理 最基本的算法有两类: 频谱分析 and 数字滤波;

对原始信号进行 采样 量化 编码 最终会生成一个编码后的数字信号 ;

期间量化精度会影响到 存储空间;

故 引入定点数及其定标 和 浮点数 两种采样的量化精度;

  1. 定点数及其定标

传统的 带小数的 二进制和十进制的转换 看下面这张图:

我们标定了一个点作为 b0 , 这一标定行为是由 程序员进行确定的 ;

目前有两种标定方法: Q表示法 and S表示法 ;具体怎么来表示数的可以看下面这张图;

例:

Q0 表示 0个小数,15个整数,1个符号位;

S15.0 表示15个整数 0个小数,一个符号位;

但计算机要读取小数点存在哪里 也是需要一定存储空间的,为了节省存储空间,引入浮点数;

  1. 浮点数

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值