微信搜索关注「水滴与银弹」公众号,第一时间获取优质技术干货。7年资深后端研发,用简单的方式把技术讲清楚。

学习计算机知识的时候,经常会问“固定分数”和“浮点数”,它们有什么区别?

平时说整数,我们说它是固定点数,说小数就是浮点数,那对吗?

在这篇文章中,我们先来看看“定点数”是如何与整数和小数相关的。

定点数是什么? 要理解什么是“定点”,首先,必须理解“定点”是什么意思。

我知道数字既包含整数又包含小数,但小数的精度范围要比整数大得多,所以如果想让计算机同时表示整数和小数,如何表示这个小数点很重要。

因此,提出了约定计算机中小数点的位置的方法。 而且,这个位置是固定的,小数点前面和后面的数字分别用二进制表示。 然后,可以组合起来将这个数字存储在计算机中。 这种表示方法叫做“定点”表示法,用这种方法表示的数字叫做“定点数”。

也就是说,“定”是固定的意思,“点”是小数点,小数点位置固定即定点数名称的由来。

定点数怎么表示数字? 常数的数量只是表示数字的一种方法,所以请考虑一下。 可以表示整数吗? 可以表示小数吗?

答案是肯定的。

常数的数量表示整数或小数时,可以分为以下三种情况。

纯粹的整数:比如整数100,小数点其实在最后一位,所以忽略不写纯粹的小数。 例如: 0.123,小数点固定为最高位的整数小数:例如1.24、10.34。 小数点在某个位置,对于前两种情况,是纯整数和纯小数。 小数点固定在最低位和最高位,所以用固定点数表示它们时,原理相同,必须只表示整数部分

对于整数小数,定点显示时,需要约定小数点的位置才能用计算机显示。

常数的数量表示纯整数和纯小数。 举几个例子吧。 首先,我们来看看常数的数量如何表示纯整数和纯小数?

对于纯整数100,由于小数点固定为最低位,所以假设用1字节(8 bit )表示。 固定小数点表示如下(d是十进制的缩写,b是二进制的缩写)。

100(d )=01100100(B ) b )纯小数0.125,由于小数点固定在最高位,因此同样为1字节)8 bit )表示,定数点表示如下。

0.125(d )=0.0010000 ) b )从以上例子可以看出,这两种情况都比较容易用定点数表示,可以通过从十进制转换为二进制来得到结果。

常数点表示整数小数。 让我们来看看常量点如何表示整数小数。

在这种情况下,需要先约定小数点的位置。

仍然以一个字节(8 bit )为例,可以约定前 5 位代表整数部分,而后 3 位代表小数部分。

用常数表示数字1.5,如下。

1.5(d )=00001 100(B ) b )用常数表示数字25.125如下:

25.125(d )=11001 001(B ) b )这是用定点数表示小数的方式。 现在让我总结一下这个过程:

在有限的位宽下,约定小数点的位置整数部分和小数部分,将它们分别转换成二进制表示二进制组合,这样在计算机中,用固定点数表示一个数字的方法不是很简单吗?

但是,是否发现了问题。 我们约定前五位表示整数部分,后三位表示小数部分。 此时,该整数部分的二进制的最大值只能是11111,即十进制的31,小数部分的二进制的最大值只能是0.111,即十进制的0.875。

如果我想表示更大范围的值,该怎么办?

扩大位宽:例如使用2字节、4字节时,如果整数部和小数部的宽度增加,显示范围也会变大,小数点的位置会发生变化。 小数点向后偏移会扩大整个数字的范围,但小数部分的精度越来越低,无法显示0.00001这样高精度的值。 由此可知,无论如何约定小数点的位置,都存在以下问题。

数值的显示范围有限(小数点越靠左,数值整体的范围越窄)数值的精度范围越有限(小数点越靠右,数值的精度越低) )总的来说,是用固定点数显示的小数,不仅数值的范围显示有限,而且其精度也很低为了解决这两个问题,有人提出使用“浮点数”来表示数字。 浮点数的表示方法将在下一篇文章中介绍。

定点数表示数字,存在上述问题,但只是表示小数的场面。 如果只是用来表示整数的话,会非常方便。

所以,现代计算机一般使用常数的数量来表示整数。

总结这篇文章,我们主要谈了在计算机中如何使用固定分数来表示数字。 总结如下。

定点数是计算机表示数字的方式之一,既可以表示整数,也可以小数用固定bit约定小数点的位置,将整数部分和小数部分分别转换成二进制。 定点数的结果被限制在小数点的位置,表示在定点数上很小

数时,数值的范围和小数精度是有限的在现代计算机中,定点数通常用来表示整数,对于高精度的小数,通常用浮点数表示

微信搜索关注「水滴与银弹」公众号,第一时间获取优质技术干货。7年资深后端研发,用简单的方式把技术讲清楚。