请解释以下段落:
C语言中的浮点数使用IEEE 754编码。
这种编码使用符号,有效数和指数。
由于采用了这种编码方式,许多数字会有很小的变化以允许存储。
此外,有效数字的位数可能会略有变化,因为它是二进制表示形式,而不是十进制表示形式。
单精度(浮点数)为您提供23位有效位,8位指数和1个符号位。
双精度(双精度)为您提供52位有效位,11位指数和1个符号位。
最近我开始使用“ C”进行编码,我了解了所有数据结构以及程序的工作方式。但是,当我看到这一段时,我听不懂一个字。
重要的,位数是什么?
变量,浮点型和双精度值如何存储值,需要多少空间以及它们的存储位置。
答案 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/