内存(位)如何在C编程中工作

时间:2019-01-26 04:48:28

标签: c floating-point

请解释以下段落:

  

C语言中的浮点数使用IEEE 754编码。

     

这种编码使用符号,有效数和指数。

     

由于采用了这种编码方式,许多数字会有很小的变化以允许存储。

     

此外,有效数字的位数可能会略有变化,因为它是二进制表示形式,而不是十进制表示形式。

     

单精度(浮点数)为您提供23位有效位,8位指数和1个符号位。

     

双精度(双精度)为您提供52位有效位,11位指数和1个符号位。

最近我开始使用“ C”进行编码,我了解了所有数据结构以及程序的工作方式。但是,当我看到这一段时,我听不懂一个字。

重要的,位数是什么?

变量,浮点型和双精度值如何存储值,需要多少空间以及它们的存储位置。

1 个答案:

答案 0 :(得分:0)

位是一个“开/关”开关,编码为0或1。您也可以将其视为布尔值,True或False。

符号位告诉您浮点数是正数还是负数。

有效数(也称为尾数)为您提供负的2的幂。对于浮点数,您有23位,因此可以表示2 ^ -23到1-2 ^ -23之间的任何值。

指数也为您提供2的幂,范围为(2 ^ -126,2 ^ 127)。

将所有内容放在一起以获得浮动:(sign)(1 + significant)2 ^(exponent)

并非所有数字都可以精确地用2的幂表示。因此,您的计算机近似于0.1之类的数字。

浮点数需要32位,而双精度数则需要64位。

以下是关于IEEE浮点的简明文章,应该使事情更清楚:https://www.doc.ic.ac.uk/~eedwards/compsys/float/