分类: C/C++
2014-07-03 16:00:54
浮点指的是带有小数的数值,浮点运算即是小数的四则运算,常用来测量电脑运算速度。大部份计算机采用二进制(b=2)的表示方法。位(bit)是衡量浮点数所需存储空间的单位,通常为32位或64位,分别被叫作单精度和双精度。有一些计算机提供更大的浮点数,例如英特尔公司的浮点运算单元Intel8087协处理器(以及其被集成进x86处理器中的后代产品)提供80位长的浮点数,用于存储浮点运算的中间结果。还有一些系统提供128位的浮点数(通常用软件实现)。
在计算机使用的浮点数被电气电子工程师协会(IEEE)规范化为IEEE 754。
单精度在32位机上的二进制表示:
The bit pattern b1b2b3...b9b10b11...b32 of a word in a 32-bit machine represents the real number:
(-1)s x 2e-127 x (1.f)2 where s = b1, e = (b2...b9)2, and f = b10b11...b32.
符号位 | 偏差指数位 | 规约形式尾数的小数位 |
1 bit | 8 bits | 23 bits |
s | e | f |
双精度在32位机上二进制表示:
The bit pattern b1b2b3...b12b13b14...b64 of two words in a 32-bit machine represents the real number
(-1)s x 2e-1023 x (1.f)2 where s = b1, e = (b2...b12)2, and f = b13b14...b64.
符号位 | 偏差指数位 | 规约形式尾数的小数位 |
1 bit | 11 bits | 52 bits |
s | e | f |
特殊值
这里有三个特殊值需要指出:
1.如果指数是0并且尾数的小数部分是0,这个数±0(和符号位相关)
2.如果指数 = 2^(e-1)并且尾数的小数部分是0,这个数是±∞(同样和符号位相关)
3.如果指数 = 2^(e-1)并且尾数的小数部分非0,这个数表示为不是一个数(NaN)。
以上规则,总结如下:
浮点数的比较
浮点数基本上可以按照符号位、指数域、尾数域的顺序作字典比较。显然,所有正数大于负数;正负号相同时,指数的二进制表示法更大的其浮点数值更大。
浮点数的运算与函数
标准运算
下述函数必须提供:
1.加减乘除Add, subtract, multiply, divide.在加减运算中负零与零相等 -0.0 = 0.0
2.平方根Square root. sqrt(x) ≥ 0 (x≥0),另规定sqrt(-0.0) = -0.0
3.浮点余数。返回值x - (round(x / y) * y).
4.近似到最近的整数round(x).如果恰好在两个相邻整数之间,则近似到偶数。
5.比较运算. -Inf <负的规约浮点数数<负的非规约浮点数< -0.0 = 0.0 <正的非规约浮点数<正的规约浮点数< Inf;
特殊比较: -Inf = -Inf, Inf = Inf, NaN与任何浮点数(包括自身)的比较结果都为假,即 (NaN ≠ x) = false.(inf正无穷大,-inf负无穷小)
点击(此处)折叠或打开
点击(此处)折叠或打开