定点数和浮点数的字长相同时,浮点数的精度比低定点数的精度高。一般情况下,常称前者为定点小数,后者为定点整数。定点小数是纯小数,约定的小数点位置在符号位之后、有效数值部分最高位之前。两浮点数进行加减,首先要看两数的阶码是否相同,即小数点位置是否对齐。
定点小数是计算机处理的数值数据多数带有小数,小数点在计算机中通常有两种表示方法,一种是约定所有数值数据的小数点隐含在某一个固定位置上,称为定点表示法,简称定点数。
所谓定点格式,即约定机器中所有数据的小数点位置是固定不变的。在计算机中通常采用两种简单的约定:将小数点的位置固定在数据的最高位之前,或者是固定在最低位之后。一般常称前者为定点小数,后者为定点整数。
浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。
关于定点数和浮点数
1. 为什会有定点浮点之分
因为在一些嵌入式系统中,例如FPGA, MCU, DSP等,受到计算体系结构,计算资源和系统指令的限制,无法处理任意分辨率的数据,即其所能处理的数据精度限制的。这里的点就是精度的意思。浮点就是小数点可以浮动,一般而言精度高,定点即小数点位置是固定的,一般而言精度低一些。
2,定点数如何进行四则运算
由于在定点系统中,一般数据的长度是有限的,例如8bit,16bit,32bit。所以如果用二进制表示数据的化,加和减就可以直接进行,乘和除2的倍数可以通过移位解决。关键的地方在乘以或除以一个非2的整数或小数的情况,在定点系统中一般是通过(x/0xffff)这种方式处理的,即先除以一个最大精度范围,然后再乘以一个系数,这里的最大精度范围和系数都是用二进制表示的。具体的定点系统有Q(16,1)等表示定点位置的方法。
3. 数据溢出
定浮点数都需要注意数据溢出的问题,特别是在定点数据处理中,由于有符号位的存在,在判断数据溢出时要考虑符号位。
浮点数规格化后精度远比定点数高吗 好像不是啊
没错,消耗同样的内存(这里是32位)时,定点数比浮点数精度更高。浮点数的优势是同样的内存它可以表示的范围比定点数更大,但这是以损失精度为代价的!
The advantage of floating-point representation over fixed-point and integer representation is that it can support a much wider range of values.
The floating-point format needs slightly more storage (to encode the position of the radix point), so when stored in the same space, floating-point numbers achieve their greater range at the expense of precision.
定点和浮点的区别?
定点和浮点的区别:
1、定义区别:
(1)定点运算中,程序员必须时刻关注溢出的发生,为了防止溢出,要么不断进行移位定标,要么做截尾。定点表示具体的数。
(2)前者耗费大量时间和空间,后者则带来精度的损失。相反,浮点运算dsp扩大了动态范围,提高了精度,节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。浮点无法精确表达需要取舍。
2、应用区别:
(1)硬件:浮点dsp处理器具有浮点/整数乘法器,整数/浮点算术逻辑运算单元ALU,适合存放扩展精度的浮点结果的寄存器等。
(2)软件:主要有浮点dsp编程的特点以及注意事项;定点dsp进行浮点运算时的定标,移位,检测溢出操作。即使比较两个相同的数,还是可能有微小的舍入差别。
浮点数的溢出处理:
1、浮点数的溢出是以其阶码溢出表现出来的。在加或减运算过程中要检查是否产生了溢出,若阶码正常,加(减)运算正常结束;若阶码溢出,则要进行相应处理。另外对尾数的溢出也需要处理。
2、阶码上溢,超过了阶码可能表示的最大值的正指数值,一般将其认为是+∞和-∞。
3、阶码下溢,超过了阶码可能表示的最小值的负指数值,一般将其认为是0。
4、尾数上溢,两个同符号尾数相加产生了最高位向上的进位,将尾数右移,阶码增1来重新对齐。
5、尾数下溢,在将尾数右移时,尾数的最低有效位从尾数域右端流出,要进行舍入处理。
以上内容参考:百度百科-定点数
以上内容参考:百度百科-浮点数
定点运算与浮点运算的本质区别在哪里,哪种
定点数与浮点数最大的区别是浮点数使用科学计数法.
如果是32位操作系统的话,科学技术法会用32位中的24位作为尾数,8位作为指数.
同样是32位,定点数可以表示-2^31~+2~31或者0~2^32,而浮点数可以标识的数的范围则大的多,所以浮点数能提供大范围数的表示
但是由于浮点数的只用23位用做尾数(1位符号位)所以尾数的表示范围比定点数低,也就是尾数的精度低
在以前(386,486的时候)定点数的计算要比浮点数快,但是现在的CPU对浮点数的优化已经和定点数一样了,速度上没有什么区别