像1011.0011这样带小数点的表现形式,完全是纸面上的二进制数表现形式,在计算机内部是无法使用的。那么,实际上计算机是以什么样的表现形式来处理小数的呢?我们一起来看一下。很多编程语言中都提供了两种表示小数的数据类型,分别是双精度浮点数和单精度浮点数。双精度浮点数类型用64位、单精度浮点数类型用32位来表示全体小数。在C语言中,双精度浮点数类型和单精度浮点数类型分别用double和float来表示。不过,这些数据类型都采用浮点数来表示小数。

浮点数是指用符号、尾数、基数和指数这四部分来表示的小数(如下图)。

32位浮点数 python 32位浮点数是什么意思_32位浮点数 python

 

 

因为计算机内部使用的是二进制数,所以基数自然就是2。因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。也就是说,64位(双精度浮点数)和32位(单精度浮点数)的数据,会被分为三部分来使用(如下图)。

32位浮点数 python 32位浮点数是什么意思_单精度_02

 

 

像0.3333·…这样相同数值无限循环的值称为循环小数。计算机是功能有限的机器设备,无法直接处理循环小数。

双精度浮点数和单精度浮点数能够表示的范围如下图

32位浮点数 python 32位浮点数是什么意思_单精度_03

 

 

浮点数的表现方式有很多种,这里我们使用最为普遍的IEEE(美国电气和电子工程师协会:这个协会制定了计算机领域的各种规定)标准。双精度浮点数和单精度浮点数在表示同一个数值时使用的位数不同。此外,双精度浮点数能够表示的数值范围要大于单精度浮点数。
符号部分是指使用一个数据位来表示数值的符号。该数据位是1时表示负,为0时则表示“正或者0”。这和用二进制数来表示整数时的符号位是同样的。数值的大小用尾数部分和指数部分来表示。例如,小数就是用“尾数部分×2的指数部分次幂”这样的形式来表示的。讲到这里,大家是不是多少有点概念了呢。
尾数部分和指数部分并不只是单单存储着用整数表示的二进制数。尾数部分用的是“将小数点前面的值固定为1的正则表达式”,而指数部分用的则是“EXCESS系统表现”。