计算机系统基础(三)定点数

版权声明:本文为博主原创文章,未经博主允许不得转载。

整数和小数是如何在计算机中表示的?

我们平时说到整数就说是定点数,说到小数就说是浮点数,它们之间是对等的么?
答案其实是错的。

定点数、浮点数都是数字的一种表现形式,定点数也可以表示小数,浮点数也可以表示整数。
这篇文章我们先来讲解定点数到底是如何表示数字的。

什么是定点数

首先我们分析一下「定点」究竟是什么意思?

我们熟知的数字分整数和小数,小数的精度范围要比整数精度范围大,所以计算机需要既能表示整数,也能表示小数,关键点在于这个小数点如何表示。

在制造计算机时,人们想出一种表示方法,即约定机器中小数点位置,且这个位置固定不变,小数点前、后部分分别表示,组合起来就能表示一个小数,这种表示方式叫做「定点」表示法,用这种方法表示的数字叫做「定点数」。

也就是说「定」是指固定的意思,「点」是指小数点,小数点位置固定即定点名字的来源。

定点数如何表示

既然定点只是表示数字的一种方式,那试想,定点表示法可以表示整数吗?可以表示小数吗?

答案是可以的。

定点表示纯整数相当于把小数点放到最后一位,例如整数100,小数点其实是在最后一位,所以忽略不写。

定点表示小数分2种情况:

  • 纯小数,例如:0.123,小数点在最高位
  • 整数+小数:例如1.24、10.34,小数点在指定某个位置

对于纯整数、纯小数的表示,由于小数点在最低位和最高位,其表示原理是相同的,只需要进行对应的进制转换表示即可。

对于整数+小数,用定点表示时,需要约定小数点的位置,才能确定表示后的结果。

定点数表示纯整数和纯小数

听闻不如一见,举几个例子,看看定点表示法,是如何表示纯整数和纯小数的?

对于纯整数100,由于小数点固定在最低位,假定在以1个字节表示,用定点数表示如下:

1
100(D) = 01100100(B)

对于纯小数0.125,由于小数点固定在最高位,同样以1个字节表示,用定点数表示如下:

1
0.125(D) = 0.00100000(B)

以上可以看出,这2种情况用定点数表示都比较简单,直接转换成二进制就是最终的结果。

定点表示整数+小数

如果一个数字既有整数部分又有小数部分,那么用定点表示时,需要约定小数点的位置。

假设以1个字节表示一个小数,我们约定前5位表示整数,后3位表示小数。

对于数字1.5用定点表示如下:

1
1.5(D) = 00001 100(B)

对于数字25.125用定点表示如下:

1
25.125(D) = 11001 001(B)

但是有没有发现一个问题,约定了前5位表示整数,后3位表示小数,那么整数部分最大只能表示11111即31,小数部分最大只能表示0.111即0.875。

如果想要表示更大范围的值,只能扩大表示范围,用2个以上字节表示,同时小数点的位置要发生变化。

如果小数点的位置向后移动,数字范围扩大了,但是小数部分的精度粒度越来越大,没有办法表示类似0.00001高精度的值。

所以这2点就是定点数表示小数产生的问题:

  • 数值范围有限
  • 精度范围有限

要解决这2个问题,所以提出了浮点数方式表示小数的方法,我们下一篇文章进行讲解。

但定点数用来表示整数还是比较方便的,所以现代计算机中一般使用定点数表示整数。

总结

我们对定点数对于整数、小数的表示总结如下:

  • 定点数是表示数字的一种形式,它既可以表示整数,也可以表示小数
  • 定点数在表示小数时,数值的范围和小数精度有限,一般不会使用定点数表示小数
  • 定点数表示整数时比较方便,现代计算机一般使用定点数表示整数

如果此文章能给您带来小小的工作效率提升,不妨小额赞助我一下,以鼓励我写出更好的文章!
kaito-kidd WeChat Pay

微信打赏

kaito-kidd Alipay

支付宝打赏