什么是浮点数

什么是浮点数,像1011.0011这样带小数点的表现形式,完全是纸面上的二进制数表现形式,在计算机内部是无法使用的。那么,实际上计算机是以什么样的表现形式来处理小数的呢?我们一起来看一下。

很多编程语言中都提供了两种表示小数的数据类型,分别是双精度浮点数和单精度浮点数。双精度浮点数类型用64位、单精度浮点数类型用32位来表示全体小数 注2。在C语言中,双精度浮点数类型和单精度浮点数类型分别用double和float来表示。不过,这些数据类型都采用浮点数注3来表示小数。那么,浮点数究竟采用怎样的方式来表示小数呢?接下来就让我们一起来看一下。

注2:双精度浮点数能够表示的正数范围是4.94065645841247×10-324~1.79769313486232×10308,负数范围是-1.79769313486232×10308~-4.94065645841247×10-324。单精度浮点数能够表示的正数范围是1.401298×10-45~3.402823×1038,负数范围是-3.402823×1038~ -1.401298×10-45。不过,正如正文中所介绍的那样,在这些范围中,有些数值是无法正确表示的。

注3:像0.12345×103和0.12345×10-1这样使用与实际小数点位置不同的书写方法来表示小数的形式称为浮点数。与浮点数相对的是定点数,使用定点数表示小数时,小数点的实际位置固定不变。例如,0.12345×103和0.12345 ×10-1用定点数来表示的话即为123.45和0.012345。
浮点数是指用符号、尾数、基数和指数这四部分来表示的小数(图3-3)。因为计算机内部使用的是二进制数,所以基数自然就是2。因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。也就是说,64位(双精度浮点数)和32位(单精度浮点数)的数据,会被分为三部分来使用(图3-4)。

什么是浮点数
图3-3 浮点数的表现形式。由符号、尾数、基数、指数四部分构成

什么是浮点数
图3-4 浮点数的内部构造(IEEE的规定)

浮点数的表现方式有很多种,这里我们使用最为普遍的IEEE标准。双精度浮点数和单精度浮点数在表示同一个数值时使用的位数不同。此外,双精度浮点数能够表示的数值范围要大于单精度浮点数。

符号部分是指使用一个数据位来表示数值的符号。该数据位是1时表示负,为0时则表示“正或者0”。这和用二进制数来表示整数时的符号位是同样的。数值的大小用尾数部分和指数部分来表示。例如,小数就是用“尾数部分× 2的指数部分次幂”这样的形式来表示的。讲到这里,大家是不是多少有点概念了呢。

下面的内容可能稍微有点复杂,因为尾数部分和指数部分并不只是单单存储着用整数表示的二进制数。尾数部分用的是“将小数点前面的值固定为1的正则表达式”,而指数部分用的则是“EXCESS系统表现”。此外,接下来还会涉及大量的新术语,大家可能会因此产生逃避心理。不过,这些其实并不难,因此请大家一定要耐心地阅读下去。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!