美文网首页
第二章(2)

第二章(2)

作者: CSU_IceLee | 来源:发表于2018-10-26 16:28 被阅读8次

浮点数

小数的表示:
假如101表示小数,则值为 1x2^-1 + 0x2^-2 + 1x2^-3 = 5/8。

定点数:

将符号位,整数位,小数位都固定分配好,无法更改。每次将整数部分的值加上小数部分的值,加上符号就构成了结果。这种表示的坏处就是无法充分利用比特位,可能小数位后面有很大一截都是0,而整数部分的表示已经超出了整数位。

浮点数:

结果表示为: (-1)^s * M * 2^E。即科学计数法。
一个浮点数可以分为三部分:符号位s,阶码字段exp,小数字段frac。
单精度浮点数中(float),s为1位,exp为8位,frac为23位,一共32位(4个字节)
双精度浮点数中(double),s为1位,exp为11位,frac为52位,一共32位(8个字节)
表示方法:
exp就是指数部分,假设exp由k位表示,为了能够表示正负指数,所以规定E = e - Bias,其中 Bias = 2^(k-1) -1.
当exp全为0时,M = frac,E = 1 - Bias
当exp不为0且不全为1时,M = 1+frac,E = exp - Bias
当exp全为1,frac为0时,表示无穷。s为0表示正无穷,s为1表示负无穷。若exp全为1,frac不为0,则表示NaN,非法数字。
二进制表达一个浮点数,像这样:100.101 当然这个点是方便我们看才加上去的。E要根据Bias去算,如果整数位只有三位,那么Bias=3,所以E = 4-3。
小数frac=1/2+1/8=5/8。exp不为零,要加上1即,M = 13/8。那么结果就是 13/8 * 2^1 = 13/4。
小数点左移相当于除以2,小数点右移相当于乘以2。

浮点数的舍入

由于浮点数无法精确表示很多小数,比如1/5就无法精确表示,只能近似表示,这就涉及到了浮点数的舍入问题。
例如舍入到1/4位(即二进制小数后两位),11.1011,此种情况下舍为11.11,可以看做是四舍五入,因为11.11比11.10更接近11.1011。
但是11.1010就比较难取舍了,因为是11.11和11.10的中间值,和两个数同样接近。所以规定这种情况下,向最低位为偶数舍入。所以最后结果是11.10。
再举一个例子:10.1110,舍入到1/4位,同样是一个中间值,为了让最低位为偶数,所以选择向上舍入,结果为11.10。

浮点数的运算

例如 3.14 + 1010,用单精度浮点数运算的结果是1010,因为浮点数要表示成1.000000000314 x 10^10,但是由于精度问题,后面的314只能舍去了,所以最后的结果就是1 x 10^10。如果用双精度(double)是可以正常表示的。

相关文章

网友评论

      本文标题:第二章(2)

      本文链接:https://www.haomeiwen.com/subject/tgcltqtx.html