美文网首页
计算机基础——浮点数的表达

计算机基础——浮点数的表达

作者: 水云楼 | 来源:发表于2019-04-04 12:23 被阅读0次

今天看一些计算机基础,满屏的010101感觉双眼分辨率彻底花掉了,其中浮点数的二进制表达这里有点模糊记录一下自己的理解
目前业界流行的浮点数标准是IEEE754 , 该标准规定了4 种浮点数类型单精度、双精度、延伸单精度、延伸双精度。前两种类型是最常用的,
以单精度小数为例
例如:0.35 转换成二进制的话

0.35*2 = 0.7  取整数位 0
0.7*2 = 1.4 取整数位1
0.4*2 = 0.8 取整数位0
0.8*2 = 1.6 取1
0.6*2 = 1.2 取1
0.2*2 = 0.4 取0
0.4*2 = 0.8 取0 
...

最终结果为01011001100110011001100110011001....
那么我们知道浮点数在计算机中是以科学计数法的形式表达的


单精度浮点数格式
  1. 符号位
    在最高二进制位上分配1位表示浮点数的符号, 0 表示正数, 1 表示负数。
  2. 阶码位
    在符号位右侧分配8 位用来存储指数, IEEE754 标准规定阶码位存储的是指数对应的移码,而不是指数的原码或补码。根据计算机组成原理中对移码的定义可知,移
    码是将一个真值在数轴上正向平移一个偏移量之后得到的。(好吧,其实我这一点根本就没懂纯粘过来的)。
  3. 尾数位
    最右侧分配连续的23 位用来存储有效数字, IEEE754 标准规定尾数以原码表
    示。正指数和有效数字的最大值决定了32 位存储空间能够表示浮点数的十进制最
    大值。指数最大值为i27 ;::: 1.7 × 1038 ’而有效数字部分最大值是二进制的1.11···1
    (小数点后23 个1 ),是个无限接近于2 的数字,所以得到最大的十进制数为
    2 × 1.7 × 1038 ’再加上最左l 位的符号,最终得到32 位浮点数最大值为3.4e+38 。


    就是这样啦

    科学计数法进行规格化的目的是保证浮点数表示的唯性。如同十进制规格化的
    要求1<= |a|<10 , 二进制数值规格化后的尾数形式为l.xyz ,满足1<= |a|<2。为了节约存储空间,将符合规格化尾数的首个1省略,所以尾数表面上是23 位,却表示
    了24 位二进制数


    尾数的表达形式

问题就出在这里,我们将0.35转换成了01011001100110011001100110011001但我们如何表达呢?我感觉其实是很简单的,思路如下:
正数的符号位为 0
然后我们将01011001100110011001100110011001放入23位的尾数位中去,我们又知道有23位但其实是表达的24位有效数字,首位的1是省略的,为了拟合首位1省略,我们的数字变成了
0 1 01100110011001100110011
可以看到整个左移了两位,也就是说数值变大了,那我们转换的时候就要把放大的倍数除掉,那么根据阶码位的计算方式x-127=-2得出x=125,那么125的二进制表达是什么呢?
就是01111101
所以拼起来就是
0 01111101 01100110011001100110011

相关文章

网友评论

      本文标题:计算机基础——浮点数的表达

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